1

DDT プラグインと DMD 2.06 をコンパイラとして Eclipse を使用しています。dlopen、dlsym usw などの関数を使用しようとすると、「未解決の参照」エラーが発生します。C および GCC では、-ldl、-lsdl usw とリンクして修正しましたが、DMD2 コンパイラにはそのようなオプションがありません。特定のライブラリとリンクする別の方法はありますか?

ところで、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();
    }

どんな助けでも嬉しいです。

4

2 に答える 2

2

D には link プラグマがあります。

pragma(lib, "dl");

これにより、DMD は "-L-ldl" (またはシステムに適切なリンク フラグ) をリンカーに発行します。リンカが (ld のように) 順序に依存する場合、手動で渡す順序でプラグマを指定する必要があります。

于 2012-08-14T21:56:20.837 に答える
1

渡すだけ-L-ldlです。

また、これらすべてを再定義する必要はありません。それらはcore.sys.posix.dlfcnモジュールで利用できます。

于 2012-08-13T17:52:50.120 に答える