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