DMD2(D语言)如何链接c库(libdl.so.2)

时间:2012-08-13 17:49:09

标签: reference hyperlink d dmd

我使用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();
    }

对任何帮助都会感到高兴。

2 个答案:

答案 0 :(得分:2)

D确实有链接编译指示:

pragma(lib, "dl");

将导致DMD向链接器发出“-L-ldl”(或系统适当的链接标志)。如果链接器是对顺序敏感的(如ld所示),则需要按照手动传递它们的顺序指定编译指示。

答案 1 :(得分:1)

只需通过-L-ldl

此外,您无需重新定义所有这些内容。它们在core.sys.posix.dlfcn模块中可用。

相关问题