我正在测试使用D代码调用其他文件中的函数 我的问题是我收到了我不明白的错误 在server.d
import std.stdio;
extern (D) void otherFunction();
main(){
otherFunction();}
并在client.d
import std.stdio;
void otherFunction(){ writeln("hello world");}
" dmd server.d"渲染此输出错误
Undefined symbols for architecture x86_64:
"_D6server13otherFunctionFZv", referenced from:
__Dmain in server.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: linker exited with status 1

我无法拨打电话的任何想法? 哦,我在OS X 10.9上 只要函数与main()在同一个文件中,调用就可以工作 / A
答案 0 :(得分:4)
尝试删除" extern ......"和 添加"导入客户端; " 然后将这两个文件与" dmd server.d client.d"
一起编译结论:要在其他文件中调用函数,需要在顶部导入每个文件,然后在同一行中编译所有文件。
dmd server.d client.d
答案 1 :(得分:-2)
如果你真的需要这个,请切换到extern(C)
,这正如你期望的那样。