Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在dll中使用映射时发生访问冲突错误 我尝试用C++创建Win32 DLL。它有一个全局声明的映射。但是,当我尝试使用dll访问映射时,它会给出一个运行时错误:WindowsError:exception:访问冲突读取0x00000008。如何解决_C++_Dll - Fatal编程技术网

在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();只是想看看这是否有效?如果您决定在地图中使用参考,不要忘记在最后删除它