从D语言调用C ++(C)

如何从D程序调用C ++函数? 我仍然无法理解如何做到这一点。 我需要执行哪些命令? 我在Fedora中使用dmd。

我能想到的最简单的例子,如果你正在调用C函数:

$ cat ac int f(int a, int b){ return a + b + 42; } $ cat a.di extern (C): int f(int, int); $ cat bd import std.stdio; import a; void main(){ writeln( f( 100, 1000) ); } $ gcc -c ac $ dmd bd ao $ ./b 1142 $ 

如果你正在使用共享对象,你可以这样:

 $ cat sdltest.di module sdltest; extern (C): struct SDL_version{ ubyte major; ubyte minor; ubyte patch; } SDL_version * SDL_Linked_Version(); $ cat ad import std.stdio; import sdltest; void main(){ SDL_version *ver = SDL_Linked_Version(); writefln("%d.%d.%d", ver.major, ver.minor, ver.patch); } $ dmd ad -L-lSDL $ ./a 1.2.14 $ 

在这个例子中,我链接了SDL函数。 dmd-L参数允许您将参数传递给ld ,在本例中为-lSDL以与SDL链接。

这里描述了 D接口文件( .di )。

您还应该看看htod 。