VC6 写 DirectShow 应用的时候,发现程序退出的时候老是在 ~_AFX_CTL3D_THREAD() 崩溃,网上基本没说清楚原因,
于是用 VC2005 编译,编译不过,说
new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
上网查阅有关资料后,发现得先编译 MFC 的库,
将冲突的两个库 "Nafxcwd.lib Libcmtd.lib",放在 Linker -> Input -> Additional Dependenics 最前面,编译通过,
~_AFX_CTL3D_THREAD() 崩溃的问题也解决了,
结论:~_AFX_CTL3D_THREAD() 崩溃是由于 Nafxcwd.lib 和 Libcmtd.lib冲突,造成程序退出时(VC6),
CThreadSlotData::FreeSlot(int 3) 中 delete (CNoTrackObject*)pData->pData[nSlot];造成的。