Am 07.11.2012 03:04, schrieb Matt:
The DLL page on the main D site is out of date in its example, importing module std.gc, which doesn't exist. Has connecting to DLLs become easier, harder, or just plain different? And in what ways should I go about doing so? My personal requirement is dynamic loading, so any help would be much appreciated.
AFAIK dlls are possible without problems if you only have a C-Style interface. As soon as you want to have a D-Interface to a dll things get really ugly / near impossible.
For example: Exporting the Module init symbol is not supported, so every module that only exists in a dll will generate a linker error. Also I had some cases where even the vtable symbol did not get exported (despite the that the class was declared as export) and caused yet another linker error. Also there are quite some issues with thread local storage and data symbols are not supported at all by dmd. The only thing that truly works is exporting C-Style functions or COM.
Also its not possible to build druntime as a shared dll, nor phobos, so you would have to duplicate all the functionality in there for every dll you have.
I decided to link everything statically until the situation dramatically improves.
Kind Regards Benjamin Thaut
