我使用Eclipse和DDT插件以及DMD 2.06作为编译器。当我尝试使用像dlopen这样的函数时,dlsym usw我得到“未解析的引用”错误,在C和GCC中我通过链接-ldl,-lsdl usw来修复它们但是DMD2编译器没有像这样的选项,是还有另一种方法可以链接特定的库吗?
btw我用以下方式定义C函数
extern(C)
{
/* From <dlfcn.h>
* See http://www.opengroup.org/onlinepubs/007908799/xsh/dlsym.html
*/
const int RTLD_NOW = 2;
void *dlopen(const(char)* file, int mode);
int dlclose(void* handle);
void *dlsym(void* handle, const(char*) name);
const(char)* dlerror();
}
对任何帮助都会感到高兴。
答案 0 :(得分:2)
D确实有链接编译指示:
pragma(lib, "dl");
将导致DMD向链接器发出“-L-ldl”(或系统适当的链接标志)。如果链接器是对顺序敏感的(如ld所示),则需要按照手动传递它们的顺序指定编译指示。
答案 1 :(得分:1)
只需通过-L-ldl
。
此外,您无需重新定义所有这些内容。它们在core.sys.posix.dlfcn
模块中可用。