Я создаю dll C++ Win32 с некоторыми глобальными данными. Существует глобальная карта std :: map, и в DLL есть экспортированные функции, которые записывают данные на карту (после приобретения блокировки записи, конечно).Доступ к глобальным данным в dll из экспортированной DLL-функции
Моя проблема в том, что когда я вызываю функцию записи из DLL DllMain, она работает без проблем. Но когда я загрузить DLL из другой программы и вызвать функцию, которая записывает данные в глобальную карту, он дает мне эту ошибку:
WindowsError: exception: access violation reading 0x00000008
Есть ли что-то, что можно сделать по этому поводу? Одна и та же функция при вызове из DllMain имеет доступ к глобальным данным в dll, но при вызове из другого процесса он не имеет доступа к глобальным данным. Пожалуйста посоветуй.
Я использую компилятор TDM-MinGW gcc 4.4.0.
EDIT: Хорошо, я понял, что проблема есть, и спасибо за помощь, ребята, но проблема была не с вопросом конструктора или неспособность иметь карты в глобальном пространстве, но вопрос в boost :: python, который я использую. Я тестировал его, но поскольку я вызывал DLL изнутри python или, возможно, что-то, модуль urllib2 не загружался в dll. Теперь я должен посмотреть, как это исправить.
Возможно, это будет хорошая идея, чтобы написать свое решение к этому как ответ и принять его, чтобы вопрос был документирован как «ответ». Либо это, либо принять существующий ответ, который был наиболее полезным. – RBerteig