私は上級プロジェクト用のプログラミング学習ゲームを作成しており、Visual Studio 2008 C++ アプリケーションに動的にロードできる DLL をコンパイルできるコンパイラを探しています。
ここで重要な点は、コンパイラが再配布可能であるということです。VS が再配布可能であれば、それを使用します。
これまでのところ、MinGW を使用してある程度の成功を収めていますが、その成功には限界があります。現在、一度に 1 つの DLL のみをロードして動作させることができます。2 番目のものをロードしようとすると、VS C++ アプリがアクセス違反エラーでクラッシュします。
VS自体でコンパイルされた2つのDLLを問題なくロードできたので、それはMinGWに固有のものであり、DLLであり、それらがLoadLibrary()などとどのように相互作用するかであると信じるようになります。
私はかなり長い間この問題に取り組んできましたが、イライラしています。MinGW の代わりに動作することがわかっている別のコンパイラを誰かが知っている場合、またはこの問題を見たことがある場合は、おそらく 2 番目の DLL がクラッシュする理由を知っているでしょう。それぞれの DLL が何らかの方法で他の DLL を踏んでいることに関連していると確信していますが、それが何であるか、またはどのように見つけるかはわかりません。
DLL をコンパイルする方法またはロードする方法が原因である可能性があります。何も思いつきません。
フィードバックをいただければ幸いです。
編集: これらは、DLL http://pastebin.com/f675df4b0を作成するための g++ および dlltool への単純な呼び出しです。
これは、私の DLL の 1 つからのソースです。 http://pastebin.com/f5c062611
これは、DLL をロードするための私の C++ アプリのコードです。 http://pastebin.com/f52f94a18
-マイケル