いくつかのグローバルデータを使用してC++Win32dllを作成しています。グローバルに定義されたstd::mapがあり、データをマップに書き込むエクスポートされた関数がdllにあります(もちろん、書き込みロックを取得した後)。
私の問題は、dll DllMain内から書き込み関数を呼び出すと、問題なく動作することです。しかし、別のプログラムからdllをロードし、データをグローバルマップに書き込む関数を呼び出すと、次のエラーが発生します。
WindowsError: exception: access violation reading 0x00000008
これについて何かできることはありますか?DllMainから呼び出された場合、同じ関数はdll内のグローバルデータにアクセスできますが、別のプロセスから呼び出された場合、グローバルデータにアクセスできません。ご意見をお聞かせください。
TDM-MinGWgcc4.4.0コンパイラを使用しています。
編集: わかりました、私は問題が何であるかを理解しました、そして助けてくれた人に感謝します、しかし問題はコンストラクターの問題やグローバル空間にマップを持つことができないことではなく、私がブースト::pythonの問題でした使用しています。テストしましたが、Pythonなどからdllを呼び出していたため、urllib2モジュールがdllに読み込まれていませんでした。今、私はそれを修正する方法を見る必要があります。