Export values (enum, int, char[]...) for DLL
Nrgyzer
nrgyzer at gmail.com
Fri May 7 05:58:27 PDT 2010
torhu Wrote:
> 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.
Thanks - works :)
More information about the Digitalmars-d-learn
mailing list