如何从D程序调用C++函数? 我还是不明白该怎么做。 我需要执行哪些命令? 我在Fedora中使用dmd。从D语言调用C++(C)
8
A
回答
14
我能想到的,如果你调用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
)被描述为here。
你也应该看看htod。
相关问题
- 1. 用C语言调试dll
- 2. D编程语言中的C#事件
- 3. 无法调用用C语言编写的DLL函数++从C#
- 4. 用c语言
- 5. 调试C/C++语言不打断点
- 6. 从D调用C++静态库
- 7. 的PInvoke从FORTRAN语言C#
- 8. C语言调用嵌套函数
- 9. 调试用C语言编写
- 10. d语言线程
- 11. C语言
- 12. E语言支持D语言
- 13. 如何使用C语言中的单元测试语言C?
- 14. C/C++语言中的Conky
- 15. C/C++的脚本语言?
- 16. 从x86汇编语言中调用C函数
- 17. 从ARM汇编语言中调用c函数printf
- 18. 我想从Rust语言中调用C库“mysql.h”
- 19. DMD2(D语言)如何链接一个C库(libdl.so.2)
- 20. 如何将D编程语言安装到C:\ Program Files中?
- 21. C语言中的try-catch语句C
- 22. C语言:使用链表
- 23. 用C语言递归hashcode
- 24. 问题,用C语言
- 25. 格式用C语言
- 26. 学习C++语言
- 27. c语言问题
- 28. 计算C语言
- 29. 在Objective - C语言
- 30. C++语言可变
尝试查看http://dlang.org/interfaceToC.html,尽管它似乎只能与C一起工作。您可以在这里查看关于如何连接到C++的提议:http://dlang.org/cpp_interface。 html – 2012-04-08 12:26:52
我看了那篇教程。它错过了关于.di文件的描述。感谢Vlad与我共享解决方案。 – Stan 2012-04-08 14:26:32