转至:http://www.cnblogs.com/panlonyin/archive/2013/08/14/3257560.html
问:最近将vs2008换成2010后重新配置环境后,运行时在imread处出现如下错误:draw.exe 中的 0x55f165af 处有未经处理的异常: 0xC0000005: 读取位置 0x676f4c78 时发生访问冲突;不知道什么原因。请大牛指点。
解决方案:
这个问题也许可以按以下办法解决:
要是发生类似“0x01307ef5 处未处理的异常: 0xC0000005: 读取位置 0xffffffff 时发生访问冲突”的问题,可能的原因之一是DLL加载错误(加载版本不对或未成功加载)。以我碰到的这个问题的解决方法为例:
环境:VS2010+OpenCV 2.3.1,同时还安装了VS2008,所以系统环境变量Path的值会有2个路径:
C:\opencv\vc9\bin;
C:\opencv\vc10\bin;
在VS2010中,依次点击菜单“调试->选项和设置->调试->输出窗口”在右侧窗口找到“模块加载消息”,将其设置为打开,这样在输出窗口的下拉框“显示输出来源”才会有“调试”选项。然后在出问题的代码行设置一断点,运行程序至断点,在输出窗口的下拉框“显示输出来源”选择“调试”,会看到加载了那些DLL,当出现了这种访问冲突问题,我发现我本来打开的是VS2010,却发现其加载的是VC9\bin下的DLL,这显然是错误的,由于装了多个版本的VS,导致路径混乱了。所以我在用VS2010时,就将“C:\opencv\vc9\bin;”删除,再注销电脑重启即可。
另外,需要注意的时,如果在Release版时,未将debug版本的opencv_core231d.dll切换至opencv_core231.dll,也会出现这种访问冲突的问题。反之,也会出现类似问题。
这是我在网上找的方法,但是我没试,我只是在debug模式下将opencv_calib3d231d.lib 所有的类似库d去掉变为opencv_calib3d231.lib就可以用了。具体为什么现在没时间去求索,忘有人知道的告诉一声