__CrtDbgReportW 链接错误。

madmanahong 2012-11-05 01:34:04
我使用了静态链接,在release版本呢没有问题,但是在debug版本却出现这个问题。
很奇怪

我的debug版本设置是:

预定义:WIN32;_WINDOWS;_DEBUG
MFC: Use MFC in a Static Library
CRT: Multi-threaded Debug (/MTd)




Generating Code...
Compiling resources...
Linking...
Searching libraries
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\lib\uafxcwd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\libcmtd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\DelayImp.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\kernel32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\user32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\gdi32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\msimg32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\comdlg32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\winspool.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\advapi32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\shell32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\comctl32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\shlwapi.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\uuid.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oledlg.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\ole32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oleaut32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\urlmon.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\comsupp.lib:
Searching D:\Codejock Software\MFC\Xtreme ToolkitPro v15.0.1\Lib\vc71\ToolkitPro1501vc71SUD.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\OLDNAMES.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\lib\atlsd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\wininet.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\ws2_32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\mswsock.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oleacc.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\imagehlp.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\GdiPlus.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\OpenGL32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\GLU32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\comsuppwd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\winmm.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\lib\uafxcwd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\libcmtd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\DelayImp.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\kernel32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\user32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\gdi32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\msimg32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\comdlg32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\winspool.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\advapi32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\shell32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\comctl32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\shlwapi.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\uuid.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oledlg.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\ole32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oleaut32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\urlmon.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\comsupp.lib:
Searching D:\Codejock Software\MFC\Xtreme ToolkitPro v15.0.1\Lib\vc71\ToolkitPro1501vc71SUD.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\OLDNAMES.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\lib\atlsd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\wininet.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\ws2_32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\mswsock.lib:
Searching C:\Progra
m Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oleacc.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\imagehlp.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\GdiPlus.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\OpenGL32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\GLU32.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\comsuppwd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\winmm.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\lib\uafxcwd.lib:
Searching C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\libcmtd.lib:
Finished searching libraries
EclipseHost.obj : error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function "public: __thiscall ATL::CSimpleStringT<wchar_t,0>::CSimpleStringT<wchar_t,0>(struct ATL::IAtlStringMgr *)" (??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z)
EclipseHostBookMarks.obj : error LNK2001: unresolved external symbol __CrtDbgReportW
EclipseHostTasks.obj : error LNK2001: unresolved external symbol __CrtDbgReportW
..\bin/GUI_EclipseD.exe : fatal error LNK1120: 1 unresolved externals

Build log was saved at "file://d:\Work\temp\debug\BuildLog.htm"
AntiProtectUI - 4 error(s), 0 warning(s)


这是怎么回事呢?我就要用静态链接/MTd。。。不想用/MDd。。。

...全文
483 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_wlg 2013-10-08
  • 打赏
  • 举报
回复
你检查一下你的工程属性吧:属性 -- 连接器 -- 输入 -- 忽略特定库 如果有msvcrtd.lib被指定忽略了,那肯定会出现这个问题的
赵4老师 2013-03-01
  • 打赏
  • 举报
回复
#define _UNICODE
赵4老师 2013-03-01
  • 打赏
  • 举报
回复
C:\>cd "C:\Program Files\Microsoft Visual Studio\VC98\Lib\" C:\Program Files\Microsoft Visual Studio\VC98\Lib>dumpbin /symbols msvcrtd.lib | find /c "CrtDbgReportW" 0 C:\Program Files\Microsoft Visual Studio\VC98\Lib>cd "C:\Program Files\Microsoft Visual Studio 8\VC\lib\" C:\Program Files\Microsoft Visual Studio 8\VC\lib>dumpbin /symbols msvcrtd.lib | find /c "CrtDbgReportW" 4 C:\Program Files\Microsoft Visual Studio 8\VC\lib>cd "C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\" C:\Program Files\Microsoft Visual Studio 9.0\VC\lib>dumpbin /symbols msvcrtd.lib | find /c "CrtDbgReportW" 4 C:\Program Files\Microsoft Visual Studio 9.0\VC\lib>cd "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\" C:\Program Files\Microsoft Visual Studio 10.0\VC\lib>dumpbin /symbols msvcrtd.lib | find /c "CrtDbgReportW" 4 C:\Program Files\Microsoft Visual Studio 10.0\VC\lib>
madmanahong 2012-11-05
  • 打赏
  • 举报
回复
我是没有直接用啊,估计就是MFC底层用的。 可以编译过,所以不是包含问题。 很奇怪,暂时先遗留到这里,以后搞定了在说吧。
zgl7903 2012-11-05
  • 打赏
  • 举报
回复
#include <crtdbg.h> 库的话 msvcrtd.lib 最好不直接使用 _CrtDbgReport, 用 _ASSERT 在Debug模式下 _ASSERT 被定义为

#define _ASSERT(expr) \
        do { if (!(expr) && \
                (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, NULL))) \
             _CrtDbgBreak(); } while (0)
在非Debug模式下

#define _ASSERT(expr) ((void)0)
所以使用 _ASSERT 包含crtdbg.h 后就不会报编译连接错误
madmanahong 2012-11-05
  • 打赏
  • 举报
回复
我又想了想,理论上release不需要这个函数,所以能编译过。 但是这个函数应该是crt中的,难道我还要特意再链接什么库吗?
madmanahong 2012-11-05
  • 打赏
  • 举报
回复
现在我处理的方式是必须要自己定义一下这个函数,这个函数理论上库里应该有啊,为什么呢? 我甚至一度怀疑是一个BUG。。。 #ifdef _DEBUG int _CrtDbgReportW( int reportType, const wchar_t *filename, int linenumber, const wchar_t *moduleName, const wchar_t *format, ... ) { return 0; } #endif 加上这个才能编译过。。。 超级之奇怪!!!!!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧