如何從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. 什麼是如果(A,B,C,d)的C語言
- 6. 調試C/C++語言不打斷點
- 7. 從D調用C++靜態庫
- 8. 的PInvoke從FORTRAN語言C#
- 9. C語言調用嵌套函數
- 10. 調試用C語言編寫
- 11. d語言線程
- 12. 「formatted」C語言
- 13. C語言
- 14. Shellcode c語言
- 15. E語言支持D語言
- 16. D語言的語言自省
- 17. 如何使用C語言中的單元測試語言C?
- 18. C/C++的腳本語言?
- 19. C/C++語言中的Conky
- 20. 嵌入Io語言:從C調用Io方法
- 21. 從ARM彙編語言中調用c函數printf
- 22. 從x86彙編語言中調用C函數
- 23. 從Fortran語言調用C:``無效*``返回值
- 24. 如何從c語言程序調用LSD(LineSegmentDetector)?
- 25. 我想從Rust語言中調用C庫「mysql.h」
- 26. 如何調用用C++編程調用我的DLL用C語言編寫
- 27. Turbo C++默認使用C語言?
- 28. C語言中的try-catch語句C
- 29. 用C語言遞歸hashcode
- 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