DLL symbol identity
Benjamin Thaut via Digitalmars-d
digitalmars-d at puremagic.com
Wed May 13 04:41:25 PDT 2015
On Wednesday, 13 May 2015 at 11:27:18 UTC, Logan Capaldo wrote:
>
> Yes it won't happen for explicit LoadLibrary's and
> GetProcAddresses, but COM or other plugin systems is an example
> of a situation where many DLLs may expose the same named
> symbols with different definitions, and there may be situations
> where people link to those DLLs directly to get other things
> they provide.
Once again, I'm going to patch the import table. The import table
gets only generated for symbosl which are _imported_ by a import
library. This only happens for things that get imported by D
libraries / executables. Linking against multiple dlls via a
import library which export the same symbol doesn't work no
matter if I do the patching or not. So nothing changes in that
regard. Your COM Dlls are not going to break even if each COM dll
exports the same symbol. Because these COM specific symbols will
not be imported by a D library via a import library, so nothing
changes. The problems you think exist do not exist because I only
patch the importing table and not the dlls that export the
symbols. Even if you mix D with C++ you are not going to have
that problem, because you can't link against multiple libraries
with the same symbol with C++ either.
More information about the Digitalmars-d
mailing list