On Thursday, 21 January 2016 at 22:49:06 UTC, jmh530 wrote:

I'm not trying to created a shared library in D. My goal is to use a shared library from C in D. Right now, I'm working with a simple test case to make sure I could understand it before working with the actual shared library I want to use.

I recall some discussion in LearningD (don't have it in front of me now) that different types of shared libraries are needed on 32bit vs. 64bit because there is a different linker. This is what I did to created the shared library:

gcc -Wall -fPIC -c <file>.c -I.
gcc -shared -o <libfile>.dll <file>.o -I.
implib <libfile>.lib <libfile>.dll

Okay then you don't need the /IMPLIB option. But you do need to specify the library via -L as I mentioned before.

i.e. use:

dmd -m64 -L/LIBPATH:<path to lib> -L<library name> prog.d

Where <library name> is yourlib.lib and this is present along with the DLL in the path you gave.

Plus your prog.d needs to have appropriate code. Example:

module app;

extern (C) void testing();

void main()
{
        testing();
}

Here testing() is provided in the DLL.

Reply via email to