digitalmars.D.learn - Mixing D and C - Windows
- "DNewbie" <run3 myopera.com> Dec 31 2011
- "Jakob Ovrum" <jakobovrum gmail.com> Dec 31 2011
- Exec <dragon-x gmx.de> Dec 31 2011
C program loads D dll or D program loads C dll Is it possible? -- D
Dec 31 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
Dec 31 2011
Jakob Ovrum Wrote: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.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684175%28v=vs.85%29.aspx
Dec 31 2011








Exec <dragon-x gmx.de>