Я настроил тривиальный тест для связи кода D с 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
Я пытался вручную указать архитектуру CTest.c
с помощью -m32 -march=i386
, но это дает мне ошибку шины во время выполнения.Я никогда раньше не сталкивался с ошибкой в автобусе, так что это просто у меня над головой.
Что я делаю неправильно?