我正在使用一些全局数据创建一个 C++ Win32 dll。全局定义了一个 std::map ,并且 dll 中有将数据写入映射的导出函数(当然,在获取写锁之后)。
我的问题是,当我从 dll DllMain 内部调用 write 函数时,它可以正常工作。但是当我从另一个程序加载 dll 并调用将数据写入全局映射的函数时,它给了我这个错误:
WindowsError: exception: access violation reading 0x00000008
有什么可以做的吗?当从 DllMain 调用时,相同的函数可以访问 dll 中的全局数据,但是当从不同的进程调用时,它无法访问全局数据。请指教。
我正在使用 TDM-MinGW gcc 4.4.0 编译器。
编辑: 好的,我已经弄清楚了问题所在,感谢各位的帮助,但问题不在于构造函数问题或无法在全局空间中拥有地图,而是我在 boost::python 中的问题正在使用。我已经对其进行了测试,但是由于我是从 python 或其他东西中调用 dll,所以 urllib2 模块没有被加载到 dll 中。现在我必须看看如何解决它。