在dll中使用映射时发生访问冲突错误 我尝试用C++创建Win32 DLL。它有一个全局声明的映射。但是,当我尝试使用dll访问映射时,它会给出一个运行时错误:WindowsError:exception:访问冲突读取0x00000008。如何解决
声明:在dll中使用映射时发生访问冲突错误 我尝试用C++创建Win32 DLL。它有一个全局声明的映射。但是,当我尝试使用dll访问映射时,它会给出一个运行时错误:WindowsError:exception:访问冲突读取0x00000008。如何解决,c++,dll,C++,Dll,声明:静态映射url\u容器 urllib是一个类 错误发生:url\u容器[ucid]=urllib() 错误发生在上述点。我假设urllib是一个类型或类,而不是一个函数 看起来你的代码没有任何问题。在调试器中,当异常发生时,您在调用堆栈上看到了什么?查看它在何处遇到访问冲突会很有帮助。我假设urllib是一个类型或类,而不是一个函数 看起来你的代码没有任何问题。在调试器中,当异常发生时,您在调用堆栈上看到了什么?查看它在何处遇到访问冲突会很有帮助。如果它还不存在于地图中,您可能需要尝试插入
静态映射url\u容器代码>
urllib是一个类
错误发生:url\u容器[ucid]=urllib()代码>
错误发生在上述点。我假设urllib是一个类型或类,而不是一个函数
看起来你的代码没有任何问题。在调试器中,当异常发生时,您在调用堆栈上看到了什么?查看它在何处遇到访问冲突会很有帮助。我假设urllib是一个类型或类,而不是一个函数
看起来你的代码没有任何问题。在调试器中,当异常发生时,您在调用堆栈上看到了什么?查看它在何处遇到访问冲突会很有帮助。如果它还不存在于地图中,您可能需要尝试插入它,尽管您所拥有的应该很好
url_container.insert ( pair<int,urllib>(ucid,urllib()) );
url_container.insert(成对(ucid,urllib());
如果地图中还没有它,您可能想尝试插入它,尽管您所拥有的应该很好
url_container.insert ( pair<int,urllib>(ucid,urllib()) );
url_container.insert(成对(ucid,urllib());
我想解决访问冲突的唯一合理方法是使用调试器。我想解决访问冲突的唯一合理方法是使用调试器。这段代码
url_container[ucid] = urllib()
在其他全局对象的静态初始化器中调用?如果是这样,则不能保证url\u容器
是在其他全局对象之前生成的
使用访问器函数来控制对象的创建时间,或者使用类似的单例库
存取器示例
map<int,urllib> & get_url_container()
{
static map<int,urllib> url_container;
return url_container
}
map&get\u url\u container()
{
静态映射url_容器;
返回url\u容器
}
作为旁白,我建议您尽量避免使用全局对象。因为你可以用你的余生来调试这样的问题。最终,一个全局对象的构造将依赖于另一个对象等,并且构造顺序没有定义,因此它可能在一个平台/编译器上工作,而在另一个平台/编译器上失败。这段代码
url_container[ucid] = urllib()
在其他全局对象的静态初始化器中调用?如果是这样,则不能保证url\u容器
是在其他全局对象之前生成的
使用访问器函数来控制对象的创建时间,或者使用类似的单例库
存取器示例
map<int,urllib> & get_url_container()
{
static map<int,urllib> url_container;
return url_container
}
map&get\u url\u container()
{
静态映射url_容器;
返回url\u容器
}
作为旁白,我建议您尽量避免使用全局对象。因为你可以用你的余生来调试这样的问题。最终,一个全局对象的构造将依赖于另一个对象等,并且构造顺序没有定义,因此它可能在一个平台/编译器上工作,而在另一个平台/编译器上失败。urllib是一个类。创建对象时会发生异常。urllib是一个类。创建对象时会发生异常。您是否尝试过:urllib*test=new urllib();只是想看看这是否有效?如果您决定在映射中使用引用,请不要忘记在末尾删除它。您是否尝试过:urllib*test=new urllib();只是想看看这是否有效?如果您决定在地图中使用参考,不要忘记在最后删除它