WinCE7.0 Win32智能设备项目使用 CString 的问题
2015-03-09 07:41
295 查看
建 了一个 WinCE 7.0 的 Win32 智能设备项目,在项目中增加了一些 .cpp 和 .h 文件。
先是编译时出现 CString 未定义的错误,于是 #include "atlstr.h"。
再编译此 WinCE7.0 Win32 的工程,Debug 版本链接时出现如下错误:
在网上查找提到的答案是增加对 LIB:atlsd.lib 的链接,如:#pragma comment(lib,"atlsd.lib"),问题解决了。
但将工程修改为 Release 版本时,却出现如下的链接错误:
不增加对 LIB:atlsd.lib 的链接,出现如上的错误提示;
如果增加了对 LIB:atlsd.lib 的链接,Debug 版本编译/链接已经通过,Release版本链接时出错了。所以怀疑与最后增加的那个链接 LIB:atlsd.lib 有关系。正好注意到 LIB 文件名后有一个字母 d,怀疑是 Debug 版本的。
所以在 SDK 的安装目录查找 atlsd.lib 文件,同时也会发现 atls.lib 文件。
最终的修改办法也就明确了,如下:
先是编译时出现 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)
在网上查找提到的答案是增加对 LIB:atlsd.lib 的链接,如:#pragma comment(lib,"atlsd.lib"),问题解决了。
但将工程修改为 Release 版本时,却出现如下的链接错误:
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
不增加对 LIB:atlsd.lib 的链接,出现如上的错误提示;
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)
如果增加了对 LIB:atlsd.lib 的链接,Debug 版本编译/链接已经通过,Release版本链接时出错了。所以怀疑与最后增加的那个链接 LIB:atlsd.lib 有关系。正好注意到 LIB 文件名后有一个字母 d,怀疑是 Debug 版本的。
所以在 SDK 的安装目录查找 atlsd.lib 文件,同时也会发现 atls.lib 文件。
最终的修改办法也就明确了,如下:
#ifdef _DEBUG #pragma comment(lib,"atlsd.lib") #else #pragma comment(lib,"atls.lib") #endifDebug/Release版本的问题都得到解决。
相关文章推荐
- WinCE7.0 Win32智能设备项目使用 CString 的问题
- VS2005不能新建Win32 智能设备项目
- vs(2005 and 2008)中使用vc++创建智能设备项目失败的正确解决方案
- “Win32 智能设备项目向导”的“应用程序设置”
- VS2005 无法创建或打开“智能设备”项目的一个问题的解决方法
- vs2005 智能设备 win32 创建项目失败
- Win32的项目转成WinCE编译时出现"DllMain function cannot be overloaded"的问题
- 使用vs2005创建智能设备的C#和C++混合项目
- VS2005不能新建Win32 智能设备项目 (转)
- VS2005无法创建或打开”智能设备”项目的一个问题的解决方法
- VS2005不能新建智能设备项目的解决方法(非IE8带来的问题)
- VS2005无法创建智能设备项目的问题
- 在VS2005下使用Visual C++创建智能设备项目 “项目创建失败” 解决办法
- VS2005不能新建Win32 智能设备项目的解决办法(转)
- 【转】VS2005 无法创建或打开“智能设备”项目的一个问题的解决方法
- 解决VS2008 开发windows mobil及智能设备项目生成速度慢的问题
- (转)在VS2005下使用Visual C++创建智能设备项目 “项目创建失败” 解决办法
- 解决VS2008 开发windows mobil及智能设备项目生成速度慢的问题
- VS2005不能新建Win32 智能设备项目的解决办法(转)
- VS2005不能新建Win32 智能设备项目