3

Linux で dlopen を使用して *.so プラグインをロードしています。プラグイン機能を mingw で Windows に移植したいと考えています。Windows のネイティブ DLL 機能に dlopen API を追加する dlfcn-win32 ライブラリがありますが、これは DLL がメインの実行可能ファイルである IIUC 内のシンボルを参照できないという Windows のネイティブの制限を回避するものではありません。

1 つの代替手段として、オブジェクトがロードされるときに共有オブジェクト内のリンクされた未解決のシンボルによって UNIX の機能を模倣するEDLL ライブラリを使用することが考えられます。おそらく、EDLL ライブラリを使用する dlfcn ラッパーを実装できますか?

もう 1 つの方法は、実行可能ファイルのインポート ライブラリを生成し、 dlfcn-win32 を使用することです。

これらの代替案のどれがより簡単である可能性がありますか? すべての「プラグイン」を実行可能ファイルでコンパイルすることを期待していることに注意してください。

-ベンリ

4

1 に答える 1

1

これを行う標準的な方法は、実行可能ファイルからインポート ライブラリを生成することのようです。これは dlfcn-win32 で非常にうまく機能するため、ソース コードをほとんど変更せずに移植性を実現できます。

于 2013-12-03T23:13:36.723 に答える