1

我正在尝试使用 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();
}

所有 derelict 的 .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 手册中。

4

1 回答 1

1

您还需要将库位置(例如 -LL/usr/lib/dmd)传递给 dmd:

dmd test.d -I/usr/include/d -L-L/usr/lib/dmd -L-lDerelictSFML -L-lDerelictUtil -L-ldl

-ldl代表 libdl,它是一个库,可让您的程序能够动态链接到库。

于 2013-11-08T18:29:02.820 回答