いくつかのグローバルデータを持つC++ Win32 dllを作成しています。グローバルに定義されたstd :: mapがあり、dllには(書き込みロックを取得した後に)データをマップに書き出す関数がエクスポートされています。エクスポートされたdll関数からのdllのグローバルデータへのアクセス
私の問題は、私がdllMainの中から書き込み関数を呼び出すと、問題なく動作するということです。私は別のプログラムからDLLをロードし、グローバルマップにデータを書き込む関数を呼び出すときしかし、それは私に、このエラーを与える:
WindowsError: exception: access violation reading 0x00000008
これについて行うことができるものはありますか? DllMainから呼び出されたときと同じ関数がdllのグローバルデータにアクセスできますが、別のプロセスから呼び出されたときにグローバルデータにアクセスすることはできません。ご意見をお聞かせください。
私はTDM-MinGW gcc 4.4.0コンパイラを使用しています。
EDIT: [OK]を、私は問題が何であるかを考え出し、およびヘルプみんなに感謝、しかし問題は、グローバル空間にマップを持つようにコンストラクタを発行したりできないことではありませんでしたが、中に問題ました私が使っているboost :: pythonです。私はそれをテストしたが、私はPythonまたはおそらく何かの中からdllを呼び出していたので、urllib2モジュールはdllにロードされていなかった。今私はそれを修正する方法を見なければならない。
解決策としてこれに回答を記入し、受け入れることをお勧めします。そうすることで、質問が「回答済み」と文書化されます。どちらか、それとも最も有益だった既存の回答を受け入れるか。 – RBerteig