using d dll/lib with msvc program

Rainer Schuetze r.sagitario at gmx.de
Mon May 14 22:26:43 PDT 2012



On 5/14/2012 7:59 PM, crashtua wrote:
> But it is something strange, one function need '_' and another dont:(
> In D dll i have:
>
> extern (C) int function() f;
> alias typeof(f) myfunc;
>
> export extern (C) int retten()
> {
> return 10;
> }
> export extern (C) void setf(myfunc ff)
> {
> f=ff;
> }
> export extern (C) int ret()
> {
> return f();
> }
>
> In C code:
>
> int(*retten)() = (int (*)())GetProcAddress(dLib,"_retten");
> int(*ret)() = (int (*)())GetProcAddress(dLib,"ret");
> void(*setf)(int(*)()) = (void (*)(int(*)()))GetProcAddress(dLib,"setf");
>
> Why so strange?

I guess you are hitting this linker bug: 
http://d.puremagic.com/issues/show_bug.cgi?id=3956

A work around is to add the exports to the .def file.


More information about the Digitalmars-d mailing list