我知道混合来自不同MSVC的DLL是不好的,应该 避免...
我有一个第三方DLL(XXX.dll,XXX.lib,XXX.h),在我的应用程序中隐式链接。
原始设置为:
成功了!
但是要转到 Windows 10 : (我的应用是使用VS 2015重建的,仍然使用XXX.dll)
现在,应用程序因访问冲突而崩溃
Exception thrown at 0x000001EF05A2BBB9 (XXX.dll) in Application.exe: 0xC0000005: Access violation reading location 0x00000000074A3A68.
这是调用堆栈:
XXX.dll!000002a7eeb6bbb9()
user32.dll!UserCallWinProcCheckWow()
user32.dll!DispatchMessageWorker()
mfc90u.dll!AfxInternalPumpMessage()
mfc90u.dll!CWinThread::Run()
mfc90u.dll!_AfxThreadEntry(pParam=0x000000d5452fd890)
msvcr90.dll!_callthreadstartex()
msvcr90.dll!_threadstartex(ptd=0x0000000000000000)
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
像往常一样,“第三方”支持非常无益...
在Win 10上突然导致此问题的原因是什么? XXX.dll!000002a7eeb6bbb9()可能会犯什么样的错误?
我当时在考虑混合不同的CRT的问题,这是一个原始的问题: different behavior when mixing DLLs from different MSVC