Mixing D and C - Windows

Jakob Ovrum jakobovrum at gmail.com
Sat Dec 31 11:19:06 PST 2011


On Saturday, 31 December 2011 at 19:05:44 UTC, DNewbie wrote:
> C program loads D dll
> or
> D program loads C dll
> Is it possible?

Both are possible.

Here's how to create a DLL in D, usable from C:

http://dlang.org/dll.html

As for loading C symbols in a DLL from a D program, you must link 
against an import library of the DLL, and create an interface 
module (similar to a header file) with the C declarations. For 
example, if this is your C DLL:

-----------
#include <stdio.h>

__declspec(dllexport) void sayHello(const char* name)
{
    printf("hello, %s!", name);
}
-----------

Then your D interface module should look like this:
-----------
extern(C) void sayHello(const char* name);

-----------

The import library must be in the OMF format. The easiest way to 
get such an import library is to use the `impllib` tool which can 
be downloaded from here:

http://ftp.digitalmars.com/bup.zip


More information about the Digitalmars-d-learn mailing list