MinGW で dll ファイルを生成したいのですが、それを行うためにいくつかのオブジェクトの依存関係があります。オブジェクトの依存関係の 1 つは libdl.so です。このオブジェクトを次のように unix に単純に追加します。
g++ xx.o yy.o /usr/lib/libdl.so -o module.so
しかし、MinGW では、このオブジェクトを追加する方法がわかりません。何か案は?
Unix と同じように使用できるlibdlの MinGW ポートがあります。ウェブサイトからの引用:
このライブラリは、POSIX および SUS で指定されているように、Windows API にあるダイナミック リンク ライブラリ関数の周りに dlfcn のラッパーを実装します。
ビルドには MinGW が必要です。
ダウンロード セクションからビルド済みのバイナリ (MinGW gcc 3.4.5 を使用) とバンドルされたソース コードを入手できます。
次のコマンドは、標準の MinGW インストールでビルドおよびインストールします (MinGW シェルから実行します)。
./configure --prefix=/ --libdir=/lib --incdir=/include && make && make install
ライブラリを DLL としてコンパイルするには、次のコマンドを使用します。
g++ -shared xx.o yy.o -ldl -o module.dll
同じ問題が発生しました(msys2、32ビット版のコンパイラなど)。
私にとって、libdl.a は /usr/lib では利用できるが、/mingw32/lib では利用できないことがわかりました。/mingw32/lib フォルダーにリンクすることで問題を解決できました。
ln -s /usr/lib/libdl.a /mingw32/lib