On Fri, Feb 13, 2009 at 5:00 AM, Eldar Insafutdinov <e.insafutdi...@gmail.com> wrote: > Bill Baxter Wrote: > >> On Fri, Feb 13, 2009 at 4:22 AM, Eldar Insafutdinov >> <e.insafutdi...@gmail.com> wrote: >> > Can somebody help me with exporting functions from a DLL? I am defining >> > functions in C++ like >> > extern "C" __declspec(dllexport) void* __qtd_QObject_QObject_QObject(args) >> > After compiling a DLL with MINGW and producing a lib file for it with >> > implib I am trying to use them from D. >> > In D I declare them as >> > extern (C) void* __qtd_QObject_QObject_QObject(args); >> > And then compile it and link it to the .lib file made by implib for that >> > DLL, but optlink complains that symbol is undefined. I tried to use that >> > Cfunction from C++ and it worked. What I can do? >> > >> >> What's the implib command you're using? Often you need to use the /system >> flag. >> >> --bb > > okay, second problem then - I need to be able to call extern (C) functions > defined in D code from DLL. I tried to do getProcAddress(NULL, > "__some_D_func"); > but this doesn't work.
I think you may have to write some code to explicitly register your D functions with the DLL. You could write a mini getDCodeProcAddress kind of thing in your D code. Then give a pointer to that function to the C code in the DLL at startup. Then C code uses getDCodeProcAddress from there. Maybe there's an easier way, but that's what I'd try. --bb