我已經設置了一個簡單的測試來鏈接D代碼與C,但我遇到了鏈接器問題。這個D-to-C鏈接有什麼問題?
// Compiled with "gcc -c CTest.c."
void SayHello()
{
printf("%s", "Hello, world!");
}
// Compiled with "dmd DTest.d CTest.o."
extern (C) void SayHello();
void main()
{
SayHello();
}
ld
吐出:
ld: warning: in CTest.o, file was built for unsupported file format which is not the architecture being linked (i386)
Undefined symbols:
"_SayHello", referenced from:
__Dmain in DTest.o
ld: symbol(s) not found
我已經試過手動指定與-m32 -march=i386
CTest.c
的架構,但是這給了我一個總線錯誤的運行。我以前從來沒有遇到過一次巴士的錯誤,所以這只是我的頭腦。
我在做什麼不正確?
well ..非端口文件格式..不是在這裏明顯的船長,但嘗試編譯D前端gcc(gdc我認爲) – fazo
@fazo爲什麼這將是必要的? D網站[說可以完成](http://www.d-programming-language.org/interfaceToC.html),沒有額外的努力。 – Maxpm
這不是關於C++接口,而是使用不兼容的編譯器生成的D和c/C++對象之間的互操作性。 – fazo