dlang调用其他文件中的函数失败

时间:2016-12-21 11:09:42

标签: function d

我正在测试使用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

2 个答案:

答案 0 :(得分:4)

尝试删除" extern ......"和 添加"导入客户端; " 然后将这两个文件与" dmd server.d client.d"

一起编译

结论:要在其他文件中调用函数,需要在顶部导入每个文件,然后在同一行中编译所有文件。

dmd server.d client.d

答案 1 :(得分:-2)

像C ++这样的D会破坏所有符号名称。 除非模块名称与1:1(您不应该这样做)匹配,否则诸如函数之类的符号将不匹配。

如果你真的需要这个,请切换到extern(C),这正如你期望的那样。