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:


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:


More information about the Digitalmars-d-learn mailing list