如何从 D 程序调用 C++ 函数?我仍然不明白该怎么做。我需要执行哪些命令?我在 Fedora 中使用 dmd。
问问题
3121 次
1 回答
15
我能想到的最简单的例子,如果你正在调用 C 函数:
$ cat a.c
int f(int a, int b){
return a + b + 42;
}
$ cat a.di
extern (C):
int f(int, int);
$ cat b.d
import std.stdio;
import a;
void main(){
writeln( f( 100, 1000) );
}
$ gcc -c a.c
$ dmd b.d a.o
$ ./b
1142
$
如果你使用共享对象,你可以这样:
$ cat sdltest.di
module sdltest;
extern (C):
struct SDL_version{
ubyte major;
ubyte minor;
ubyte patch;
}
SDL_version * SDL_Linked_Version();
$ cat a.d
import std.stdio;
import sdltest;
void main(){
SDL_version *ver = SDL_Linked_Version();
writefln("%d.%d.%d", ver.major, ver.minor, ver.patch);
}
$ dmd a.d -L-lSDL
$ ./a
1.2.14
$
在这个例子中,我链接了一个SDL函数。-L
参数dmd
允许您将参数传递给,ld
在这种情况下-lSDL
是与 SDL 链接。
D 接口文件 ( .di
) 在这里描述。
您还应该看看htod。
于 2012-04-08T12:35:13.600 回答