複数の DLL を含む C Windows アプリケーションを使用しています。最初の DLL は、複数の関数で使用されるグローバル変数を定義します。2 番目の dll には、最初の dll 内の関数を呼び出すメソッドがあり、その関数がそのグローバル変数にアクセスします。
最初の dll からグローバル変数にアクセスすると、すべて正常に動作しますが、2 番目の dll から発信された呼び出しからグローバル変数にアクセスすると、次のエラーが発生します。
タイプ 'System.AccessViolationException' の未処理の例外が a.exe で発生しました 追加情報: 保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。
注: 2 番目の変数の関数は、そのグローバル変数に直接アクセスすることはありません。最初のdllでの呼び出しのみです。
.DEF ファイル経由で変数をエクスポートしてから、'_declspec( dllimport )' を使用して 2 番目の dll で変数を定義しようとしましたが、うまくいきませんでした (2 番目の dll が明示的に定義されていないため、期待していませんでした)。変数にアクセスします。
これを修正する方法を知っている人はいますか。
ありがとう