先安装了vc2010,后安装了vc2008,现在打开程序,都跑不起来了,程序直接退出。
如果在vc2010的debug模式中,点debug运行,报错如下
MultiParentTree.exe 中的 0x75266010 (msvcr90d.dll) 处最可能的异常: 0xC0000005: 读取位置 0xffffffffffffffff 时发生访问冲突
MultiParentTree.exe 中的 0x75266010 (msvcr90d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xffffffffffffffff 时发生访问冲突
对应的源代码如下
l_env = Environment::createEnvironment("ZHS16GBK","OCCIUTF16");
对应的堆栈如下
msvcr90d.dll!memcmp(unsigned char * buf1, unsigned char * buf2, unsigned long count) 行 150 Asm
msvcp90d.dll!std::char_traits<char>::compare(const char * _First1, const char * _First2, unsigned __int64 _Count) 行 561 C++
msvcp90d.dll!std::basic_string<char,std::char_traits<char>,std::_DebugHeapAllocator<char> >::compare(unsigned __int64 _Off, unsigned __int64 _N0, const char * _Ptr, unsigned __int64 _Count) 行 2061 + 0x43 字节 C++
msvcp90d.dll!std::basic_string<char,std::char_traits<char>,std::_DebugHeapAllocator<char> >::compare(const char * _Ptr) 行 2038 C++
msvcp90d.dll!std::operator==<char,std::char_traits<char>,std::allocator<char> >(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & _Left, const char * _Right) 行 94 + 0xf 字节 C++
oraocci11d.dll!000000018008876e()
[下面的框架可能不正确和/或缺失,没有为 oraocci11d.dll 加载符号]
> MultiParentTree.exe!CMultiParentTreeApp::InitInstance() 行 76 + 0x6e 字节 C++
mfc100d.dll!AfxWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) 行 37 + 0x13 字节 C++
MultiParentTree.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) 行 26 C++
MultiParentTree.exe!__tmainCRTStartup() 行 547 + 0x42 字节 C
MultiParentTree.exe!WinMainCRTStartup() 行 371 C
kernel32.dll!00007fffa1e613d2()
ntdll.dll!00007fffa2145454()
我怀疑是dll版本的问题,因为我使用的是vc2010,但debug却使用了vc9的库。
请问该如何修正过来?别告诉我把vc2008卸掉啊。
------解决思路----------------------
重新编译项目试试看, 如果有依赖的lib/DLL 也用新版本的VS编译
------解决思路----------------------
卸载两者后,先安装2008、再安装2010
------解决思路----------------------
很显然,你的OCCI库是用VS2008编译出来的,所以在VS2010上使用该库时,它链接到的仍然是VC++2008运行库
------解决思路----------------------
只能源码重新编译,不要混用不同版本的编译器库等