我正在尝试使用Derelict2绑定在D中编写测试程序。这是我的代码:
import std.stdio;
import derelict.sfml.audio;
pragma(lib, "/home/ryan/Derelict2/lib/libDerelictSFMLAudio.a");
pragma(lib, "/home/ryan/Derelict2/lib/libDerelictUtil.a");
void main(){
DerelictSFMLAudio.load();
}
所有被遗弃的.di文件都在dmd的默认导入目录中,所以我认为以下命令应该编译并链接我的程序。
dmd test.d -L-lDerelictSFML -L-lDerelictUtil -L-ldl
但是,我收到此错误:
/usr/bin/ld: cannot find -lDerelictSFML
/usr/bin/ld: cannot find -lDerelictUtil
collect2: error: ld returned 1 exit status
--- errorlevel 1
我究竟做错了什么?
有点偏离主题,但也是一个问题:
-ldl标志有什么作用?我知道这是成功链接所必需的,但我不确定它是怎么做的,而不是在ld手册中。
答案 0 :(得分:1)
您还需要将库位置(例如-L-L / usr / lib / dmd)传递给dmd:
dmd test.d -I/usr/include/d -L-L/usr/lib/dmd -L-lDerelictSFML -L-lDerelictUtil -L-ldl
-ldl
代表libdl,它是一个允许程序动态链接到库的库。