Maarten Boekhold wrote:
Suppose I have a plugin library that contains calls that reside in the
executable that dlopen()'s that plugin. You can link such a plugin by
using a .def file that contains something like:
IMPORTS
symbol = executable.exe.symbol
Now if I need to be able to use the *same* plugin from *two*
executables, how do I resolve that??? Can I use a .def file that
contains:
IMPORTS
symbol = executable_1.exe.symbol
symbol = executable_2.exe.symbol
My gut feeling says 'no', but hope against hope...
Well, shortly... You can't do that. Since windows exports are binded to
name of library (application) and symbol...
Long way: You can do it, but you need to take alternative route.
You need one extra DLL that has imports symbol from executable and
ex-exports symbol you need forward to plugin:
for plugin you need to do following:
IMPORT
symbol = helper.dll.symbol
and for both apps you create own helper.dll:
app1.exe create helper.dll:
IMPORT
symbol = app1.exe.symbol
EXPORT
symbol
app2.exe create helper.dll:
IMPORT
symbol = app2.exe.symbol
EXPORT
symbol
And finally...
Or even better, DTRT in windoze world is to pass needed symbol pointers
as arguments to plugin function, since windows libraries and
applications doesn't allow unresolved symbols in linktime (so called
backlinking issue)...