Nrgyzer Wrote: > 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 :)
Hello, dmd now exports all values successfully. But when I try to export a class, I get the following errors: "Error 42: Symbol Undefined _D5mydll1t7__ClassZ Error 42: Symbol Undefined _D5mydll1t5_ctorMFZC11mydll1t" Source of mydll.d is: export class t { export this(); } Source of mydll2.d is: import std.stdio: writefln; export class t { export this() { writefln("hello world!"); } } Source of test.d: pragma(lib, "mydll.lib"); import mydll; void main() { t myTest = new t(); } When I export D5mydll1t7__ClassZ in my def-File, I can compile it but when I try to create a new instance of t, I get an access violation :(.