DコードをCとリンクするための簡単なテストを設定しましたが、リンカの問題が発生しています。このD-to-Cリンケージで何が問題になっていますか?
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
のアーキテクチャを指定して試してみたが、それはで私にバスエラーを与える:
// 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
を吐き出しますランタイム。私は前にバスのエラーを取得したことはないので、ちょうど私の頭の上に行く。
私は間違って何をしていますか?
よくできていないファイル形式..ここでは明らかにキャプテンではありませんが、gccのためにDでコンパイルしてみてください(gdcと思います) – fazo
@fazoなぜそれが必要でしょうか? Dウェブサイトはそれほど多くの努力をすることなく(http://www.d-programming-language.org/interfaceToC.html)行うことができます。 – Maxpm
これはc <->のC++インターフェイスではなく、互換性のないコンパイラで作成されたDオブジェクトとc/C++オブジェクトとの相互運用性についてのものではありません。 – fazo