在DMD2下使用废弃物3(D)

时间:2012-05-12 14:31:02

标签: opengl sdl d

在使用其他语言(如C ++和Java)之后,我一直在使用D大约一个月。我一直想将我的简单游戏平台从Java移到D,我想使用Derelict3库来实现这一目标。我编译了位于https://github.com/aldacron/Derelict3

的github存储库

运行Linux,如果有帮助的话。

我已将.a文件放在 / usr / lib /..中,并且我已将<。>文件(Dereliclic根目录中的import文件夹)放在 /中USR /包括/ I386-Linux的GNU / DMD / druntime /导入

我的代码如下:

import std.stdio;

import derelict.opengl3.gl3;
import derelict.glfw3.glfw3;

pragma(lib, "/usr/lib/libDerelictUtil.a");
pragma(lib, "/usr/lib/libDerelictGL3.a");
pragma(lib, "/usr/lib/libDerelictGLFW3.a");

void main() {
    DerelictGL3.load();
    writeln("This is a line");
}

这是基于stackoverflow上回答的其他问题以及dlang.org论坛中的一些主题,但是当我编译时终端向我吐出这个问题:

kevin@kevin-Latitude-D620:~$ dmd main.d
/usr/include/D/Derelict/libDerelictGL3.a(gl3.o): In function `_D8derelict7opengl33gl318_sharedStaticDtor2FZv':
../import/derelict/opengl3/gl3.d:(.text._D8derelict7opengl33gl318_sharedStaticDtor2FZv+0x4): undefined reference to `_D8derelict4util6loader15SharedLibLoader19isAutoUnloadEnabledOFNdZb'
/usr/include/D/Derelict/libDerelictGL3.a(gl3_d1_649.o):(.data+0x38): undefined reference to `_D8derelict4util6loader15SharedLibLoader7__ClassZ'
/usr/include/D/Derelict/libDerelictGL3.a(gl3_d1_649.o):(.rodata+0x4418): undefined reference to `_D8derelict4util6loader15SharedLibLoader4loadMFZv'
(MORE of the above)
collect2: ld returned 1 exit status
--- errorlevel 1

1 个答案:

答案 0 :(得分:2)

ld ,链接器维护一个未解析的符号列表,因为它首先移动到要链接的库,尝试减少其未解析的列表。这意味着任何依赖项都应列在之后依赖于它们的代码。所以尝试重新安排你的pragma(libs ......),如下所示:

pragma(lib, "DerelictGL3"); 
pragma(lib, "DerelictGLFW3"); 
pragma(lib, "DerelictUtil"); 
pragma(lib, "dl");