On Sunday, 3 April 2016 at 14:19:17 UTC, rikki cattermole wrote:
The link is there as a backup plan. I made the assumption that
it may not be possible to have more than one D shared lib
loaded during the lifetime.
The idea is simple. Have a D shared lib that acts as a dynamic
dispatch to the appropriate child process who will route the
call to the function in question.
The hooking into GetProcAddress allows having symbols that are
not exported by the shared library that was loaded.
Anyway, at worse this architecture would allow quite fast
reloading!
Have you actually tried doing this in practice and getting it to
work?
Even with correct function signatures, you'd need more than just
the types to correctly marshall the data between processes. RPC
is generally done with a subset of types with well-defined
serializations.
How would you even get GetProcAddress hooking working in this
scenario? You wouldn't even know the number of arguments, much
less their types!