当前位置: 代码迷 >> VC/MFC >> 怎么解决vc2010使用了vc2008的库
  详细解决方案

怎么解决vc2010使用了vc2008的库

热度:96   发布时间:2016-05-02 03:37:39.0
如何解决vc2010使用了vc2008的库?
先安装了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运行库
------解决思路----------------------
只能源码重新编译,不要混用不同版本的编译器库等