我正在D中编写一个应用程序,它与OpenGL和一些其他本机库(使用Derelict库)进行交互。但是,这个错误似乎与此无关。
每当我执行“dub build”时,编译成功,但ld会因此消息失败:
Linking...
../git/mango-engine/bin/libmango-engine.a(gl_model_503_284.o):(.data._D12mango_engine8graphics6opengl8gl_model7GLModel6__initZ+0x10): undefined reference to `internal'
../git/mango-engine/bin/libmango-engine.a(shader_51b_52f.o): (.data._D12mango_engine8graphics6shader13ShaderProgram6__initZ+0x18): undefined reference to `internal'
collect2: error: ld returned 1 exit status
我不知道这意味着什么,以前从未见过它。另外,奇怪的是,当我从另一个DUB项目导入特定文件:gl_model.d和shader.d时,才会出现此错误。如果未导入它们,则链接器会成功。
我不确定要提供哪些信息,因此我只链接整个源代码here.
编辑:只有在编译x86_64时才会出现此错误。 x86工作正常。
答案 0 :(得分:0)
我已经将它跟踪到两个文件中的两行(两者都相同):
private SyncLock lock = new SyncLock();
其中SyncLock是我用于“同步”块的空类(不确定这是否是正确的方法)。出于某种原因,如果我将初始化移动到构造函数,它可以正常工作(没有错误)。