链接器错误:对“内部”的未定义引用

时间:2016-10-09 22:55:44

标签: linker linker-errors d ld

我正在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工作正常。

1 个答案:

答案 0 :(得分:0)

我已经将它跟踪到两个文件中的两行(两者都相同):

private SyncLock lock = new SyncLock();

其中SyncLock是我用于“同步”块的空类(不确定这是否是正确的方法)。出于某种原因,如果我将初始化移动到构造函数,它可以正常工作(没有错误)。