gpt4 book ai didi

c++ - D语言调用C++(C)

转载 作者:可可西里 更新时间:2023-11-01 17:32:46 25 4
gpt4 key购买 nike

如何从D程序中调用C++函数?我仍然不明白该怎么做。我需要执行什么命令?我在 Fedora 中使用 dmd。

最佳答案

我能想到的最简单的例子,如果你调用 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功能。 dmd-L 参数允许您将参数传递给 ld , 在这种情况下 -lSDL 与 SDL 链接。

D接口(interface)文件(.di)描述here .

您还应该看看 htod .

关于c++ - D语言调用C++(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com