在编译选项为debug时,调试程序总是在
CDocument* CWinApp::OpenDocumentFile(LPCTSTR lpszFileName)
{
ASSERT(m_pDocManager != NULL);
return m_pDocManager->OpenDocumentFile(lpszFileName);
}
中的ASSERT(m_pDocManager != NULL);时挂掉。
最重要的是我的程序中根本就没有与打开文件相关的代码。而在Release时没有问题。
在更改了N多次编译配置之后发现Debug与Release连接的静态库都一样比如xxx.lib,在Debug版本中修改静态连接库为xxxD.lib(库的Debug版本),该问题就解决了。
但是xxx库的Debug版本和Release中的编译选项都差不多,当然除了预定义的宏:
Debug :
WIN32,_DEBUG,_WINDOWS,_MBCS
/nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR"Debug/" /Fp"Debug/Packet.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
Release:
WIN32,NDEBUG,_WINDOWS,_MBCS
/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FR"Release/" /Fp"Release/Packet.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c
我的可执行程序的
Debug :
..\Lib\PacketD.lib ..\lib\Telephoned.lib ../lib/xcsp_eclib.lib ../lib/SoftCrypto.lib ../lib/setupapi.lib ../lib/wbemuuid.lib ../lib/wbemuuid.lib /nologo /subsystem:windows /incremental:no /pdb:"Debug/1111111.pdb" /map:"Debug/1111111.map" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"../Bin/1111111.exe"
Release:
..\Lib\Packet.lib ..\lib\Telephone.lib ../lib/xcsp_eclib.lib ../lib/SoftCrypto.lib ../lib/setupapi.lib ../lib/wbemuuid.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/11111111.pdb" /map:"Release/1111111.map" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"../Bin/111111.exe"
以上配置不知道为啥出现该问题,也可参考http://social.msdn.microsoft.com/Forums/zh-CN/winembmngdapp/thread/a00665bf-ea9d-4fda-9122-c494c6850b85中的描述。
敬请达人解惑!