Export values (enum, int, char[]...) for DLL

torhu no at spam.invalid
Thu May 6 17:55:02 PDT 2010


On 06.05.2010 16:06, Nrgyzer wrote:
> Thanks, but doesn't work :(
>
> My files contain:
>
> mydll.d:
>
> module mydll;
> export extern int i;
>
> mydll2.d:
>
> module mydll;
> export int i = 7;
>
> test.d:
>
> import mydll;
> import std.stdio;
>
> void main() {
> 	writefln(i);
> }
>
> I can compile the dll, but when I compile test.d, I get the following error: "Error 42: Symbol Undefined _D5mydll1ii"

It seems that export doesn't work for data, only functions.  If you 
build with -map, you'll see that i is not exported.  I got it working by 
using this .def file:

LIBRARY "mydll.dll"
EXETYPE NT
EXPORTS
D5mydll1ii


Then create the import lib with:
implib /s mydll.lib mydll.dll

/s adds the underscores.


If you use extern (C) the symbols will be a lot simpler to read and 
write, though.  Look at the .map file to see what the actual symbols are.


More information about the Digitalmars-d-learn mailing list