DLL用のluaモジュールをいくつか作成しましたが、いくつかの依存関係があります。これらの依存関係は、モジュールDLLが正しく機能するために必要です。これらの依存関係のほとんどは、C++ランタイムライブラリ(libstdc + -6.dllおよびlibgcc_s_seh-1.dll)です。私はpackage.loadlib
呼び出しを使用してモジュールをロードしようとしています:Lua DLLライブラリの依存関係
init = assert(package.loadlib("C:\\Path\\To\\My\\Module.DLL", "luaopen_MyModule"))
init()
依存関係およびモジュールのDLLは、メインの実行可能ファイルのDLLとは別のフォルダにあります。このため、package.loadlib
はモジュールの依存関係を見つけることができないようです。これらの依存関係へのパスがPATH変数に追加されてもうまく動作しますが、luaモジュールが使用されるマシンでPATHを変更することはできません。また、依存関係を静的にリンクすることもできません。
ルアの依存関係の検索パスを指定する方法はありますか? luaはWindowsシステムでのみ使用されるため、ソリューションはプラットフォームに依存する可能性があります。
あなたはそれらのDLLのは、一緒にバンドルされており、あなたのdllと一緒に移動されている必要がありますでしょうか? 'libstdC++ - 6.dll'をdllに静的にリンクして、外部のDLLが必要ないようにすることもできます。 Mingwにはこのオプションがありますが、それがどのように呼び出されたのかは覚えていません。 –
他のdllは、私のdllと同じフォルダにありますが、メインの実行可能プログラム以外のフォルダにあります。探しているオプションは-staticですが、標準ライブラリに静的リンクを使用することはできません。 – Shadowwolf
余分なものがあります: '-static-libstdC++'もっと見るhttp://stackoverflow.com/questions/14225083/linking-with-static-libstdc-flag-on-mingw-4-7-1 'seh' dllに相当するものがあるかどうかは分かりません。 –