建 了一个 WinCE 7.0 的 Win32 智能设备项目,在项目中增加了一些 .cpp 和 .h 文件。
先是编译时出现 CString 未定义的错误,于是 #include "atlstr.h"。
再编译此 WinCE7.0 Win32 的工程,Debug 版本链接时出现如下错误:1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CTraceCategory ATL::atlTraceString" (?atlTraceString@ATL@@3VCTraceCategory@1@A)
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "public: static class ATL::CTrace ATL::CTrace::s_trace" (?s_trace@CTrace@ATL@@2V12@A)
1>ProtocolParse.obj : error LNK2019: 无法解析的外部符号 AtlTraceVU,该符号在函数 "public: void __cdecl ATL::CTrace::TraceV(char const *,int,unsigned long,unsigned int,wchar_t const *,char *)const " (?TraceV@CTrace@ATL@@QBAXPBDHKIPB_WPAD@Z) 中被引用
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CTraceCategory ATL::atlTraceException" (?atlTraceException@ATL@@3VCTraceCategory@1@A)
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlStringMgr ATL::g_strmgr" (?g_strmgr@ATL@@3VCAtlStringMgr@1@A)
1>ProtocolParse.obj : error LNK2019: 无法解析的外部符号 "public: struct HINSTANCE__ * __cdecl ATL::CAtlBaseModule::GetHInstanceAt(int)" (?GetHInstanceAt@CAtlBaseModule@ATL@@QAAPAUHINSTANCE__@@H@Z),该符号在函数 "struct HINSTANCE__ * __cdecl ATL::AtlFindStringResourceInstance(unsigned int,unsigned short)" (?AtlFindStringResourceInstance@ATL@@YAPAUHINSTANCE__@@IG@Z) 中被引用
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlBaseModule ATL::_AtlBaseModule" (?_AtlBaseModule@ATL@@3VCAtlBaseModule@1@A)
1>atlsd.lib(Allocate.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(AtlTraceModuleManager.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(atlbase.obj) : error LNK2019: 无法解析的外部符号 _CrtDbgReportW,该符号在函数 "public: __cdecl ATL::CAtlBaseModule::CAtlBaseModule(void)" (??0CAtlBaseModule@ATL@@QAA@XZ) 中被引用
1>atlsd.lib(atlstr.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(Externs.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>ProtocolParse.obj : error LNK2019: 无法解析的外部符号 "public: struct HINSTANCE__ * __cdecl ATL::CAtlBaseModule::GetHInstanceAt(int)" (?GetHInstanceAt@CAtlBaseModule@ATL@@QAAPAUHINSTANCE__@@H@Z),该符号在函数 "struct HINSTANCE__ * __cdecl ATL::AtlFindStringResourceInstance(unsigned int,unsigned short)" (?AtlFindStringResourceInstance@ATL@@YAPAUHINSTANCE__@@IG@Z) 中被引用
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlBaseModule ATL::_AtlBaseModule" (?_AtlBaseModule@ATL@@3VCAtlBaseModule@1@A)
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlStringMgr ATL::g_strmgr" (?g_strmgr@ATL@@3VCAtlStringMgr@1@A)
#ifdef _DEBUG
#pragma comment(lib,"atlsd.lib")
#else
#pragma comment(lib,"atls.lib")
#endif
Debug/Release版本的问题都得到解决。