WinCE7.0 Win32智能设备项目使用 CString 的问题

建 了一个 WinCE 7.0 的 Win32 智能设备项目,在项目中增加了一些 .cpp 和 .h 文件。

先是编译时出现 CString 未定义的错误,于是 #include "atlstr.h"。

再编译此 WinCE7.0 Win32 的工程,Debug 版本链接时出现如下错误:

1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CTraceCategory ATL::atlTraceString" ([email protected]@@[email protected]@A)
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "public: static class ATL::CTrace ATL::CTrace::s_trace" ([email protected]@[email protected]@[email protected])
1>ProtocolParse.obj : error LNK2019: 无法解析的外部符号 AtlTraceVU,该符号在函数 "public: void __cdecl ATL::CTrace::TraceV(char const *,int,unsigned long,unsigned int,wchar_t const *,char *)const " ([email protected]@[email protected]@[email protected]) 中被引用
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CTraceCategory ATL::atlTraceException" ([email protected]@@[email protected]@A)
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlStringMgr ATL::g_strmgr" ([email protected]@@[email protected]@A)
1>ProtocolParse.obj : error LNK2019: 无法解析的外部符号 "public: struct HINSTANCE__ * __cdecl ATL::CAtlBaseModule::GetHInstanceAt(int)" ([email protected]@[email protected]@[email protected]@[email protected]),该符号在函数 "struct HINSTANCE__ * __cdecl ATL::AtlFindStringResourceInstance(unsigned int,unsigned short)" ([email protected]@@[email protected]@[email protected]) 中被引用
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlBaseModule ATL::_AtlBaseModule" ([email protected]@@[email protected]@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)" ([email protected]@@[email protected]) 中被引用
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)" ([email protected]@[email protected]@[email protected]@[email protected]),该符号在函数 "struct HINSTANCE__ * __cdecl ATL::AtlFindStringResourceInstance(unsigned int,unsigned short)" ([email protected]@@[email protected]@[email protected]) 中被引用
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlBaseModule ATL::_AtlBaseModule" ([email protected]@@[email protected]@A)
1>ProtocolParse.obj : error LNK2001: 无法解析的外部符号 "class ATL::CAtlStringMgr ATL::g_strmgr" ([email protected]@@[email protected]@A)  

如果增加了对 LIB:atlsd.lib 的链接,Debug 版本编译/链接已经通过,Release版本链接时出错了。所以怀疑与最后增加的那个链接 LIB:atlsd.lib 有关系。正好注意到 LIB 文件名后有一个字母 d,怀疑是 Debug 版本的。
所以在 SDK 的安装目录查找 atlsd.lib 文件,同时也会发现 atls.lib 文件。

最终的修改办法也就明确了,如下:

1 #ifdef _DEBUG
2 #pragma comment(lib,"atlsd.lib")
3 #else
4 #pragma comment(lib,"atls.lib")
5 #endif  

Debug/Release版本的问题都得到解决。

时间: 2024-10-24 11:17:43

WinCE7.0 Win32智能设备项目使用 CString 的问题的相关文章

新建 WinCE7.0 下的 Silverlight 工程

以下文章以 http://download.csdn.net/detail/91program/7588393 中的工程为基础,这也是我写此文章时一步一步建立的 Silverlight 工程. 1 使用 Microsoft Expression Blend 3 创建一个 Silverlight for Windows Embedded Application 工程,放一个按键控件在窗体上,命名按键然后保存.由于 Microsoft Expression Blend 3 现在只支持生成 C# 的代

Mucad 3.703 Full-ISO 1CD+HiTec.Zang.RI-CAD.v2.2.0.Win32 1CD工艺流程图开发

Mucad 3.703 Full-ISO 1CD+HiTec.Zang.RI-CAD.v2.2.0.Win32 1CD工艺流程图开发 BRE BR&E ProMax 2.0.7047.0 工艺流程模拟软件ProMax\ RI-CAD是专为绘制标准兼容P&I工艺流程图开发的. 2015.11.08 CAMWorks 2016 SP0 Multilang for Solid Edge ST7-ST8 Win64 1DVD  CEI EnSight v10.1.6(b) Windows &

项目1.0版本的项目总结

公司项目的1.0版本已经结束有一段时间了,2.0版本也逐渐进入尾声,从1.0版本结束就计划着写一下项目总结,一是对项目进行一下思路梳理,二是总结一下之前的工作,找到所遇到的问题和架构的不合理之处,为接下来的版本做准备.由于2.0版本的任务比较紧急,一直没有时间做个系统的整理,只是零零星星的做了一些备注.笔记什么的.因为个人原因,准备回济南发展,所以向公司提出了辞职.利用这段准备移交工作的时间做了一下项目版本1.0的总结,希望能为新来的iOS同事快速进入状态提供一些帮助. 由于项目还没有上线,所以

Android5.1和Android6.0定时编译项目方法 (转)

为了不占用开发的时间,我们通常会选择晚上下班后让项目自动编译,那么如何定时编译项目呢.Android5.1和Android6.0定时编译项目的方法是一样的,下面就我本地的C100H_V20(Android5.1)项目工程为例: 首先总体看一下工程下面都有那些文件: 然后打开你的编译脚本,里面的内容如下: [java] view plain copy #update svn cleanup svn up #compile chmod 777 -R ./ source build/envsetup.

gradle2.0笔记——让项目升级到gradle2.0

昨晚看到QQ群消息说gradle2.0发布了,今天去看了一下,确实是昨天发布的,为rc版本:Gradle 2.0-rc-2.于是决定试一下. gradle可以在官网上下载,地址如下:http://www.gradle.org/release-candidate.不过由于我许多项目因为兼容性问题目前暂时用不了gradle2.0,所以现在只能对我个别私人项目使用.如果你想让所有项目都用gradle2.0的话,可以下载gradle2.0然后解压,修改对应的环境变量指向到gradle2.0的目录.然后项

.Net Core .Net Core V1.0 创建MVC项目

.Net Core V1.0 创建MVC项目 创建MVC项目有两种方式: 一.创建Web项目:(有太多没用的东西要去删太麻烦) 2.项目目录结构: 此种方法要注意的是,会创建好多个json文件,下面就简单的介绍: launchSettings.json//启动配置文件: appsettings.json //配置文件,如framework下的webconfig文件: bower.json //存放文件的引用,例如:jquery等文件: bundleconfig.json //自动压缩可关联文件:

springboot2.0+dubbo-spring-boot-starter聚合项目打可执行的jar包

springboot2.0+dubbo聚合项目打可执行的jar包 springboot2.0+dubbo-spring-boot-starter项目服务方打包和以前老版本的dubbo打包方式不一样,不需要将dubbo的配置文件放到META-INF下的spring文件夹中,和普通的springboot项目打包相似. 一般dubbo项目都是聚合形式的,下面看一下springboot+dubbo-spring-boot-starter聚合打可执行的jar: 一.spring-boot-maven-pl

VueCli3.0全栈项目-资金管理系统带权限(node/element/vue)

课程简介:通过本系列课程,可以快速的掌握全栈开发流程, 包括node.js的接口搭建, vue前端项目的构建, element-ui视图的构建. 一套应有尽有的课程! 课程目录:1.Vue全栈-最终成果展示.mp42.Node接口搭建-express搭建服务器.mp43.Node接口搭建-连接MongoDB数据库.mp44.Node接口搭建-搭建路由和数据模型.mp45.Node接口搭建-搭建注册接口并存储数据.mp46.Node接口搭建-使用全球公认头像gravatar.mp47.Node接口

vue-cli 3.0生成的项目run build后为空白页

vue-cli 3.0 生成的项目与2.x不同,其中并没有webpack配置文件config/index.js.这个时候需要我们在项目的根目录下创建一个vue.config.js文件,代码如下: 1 module.exports = { 2 baseUrl: './', 3 }; 自己看效果的时候,再将路由改为hash模式.就可以直接打开生成的index.html看到和run serve时一样的效果了. 原文地址:https://www.cnblogs.com/bjhl/p/10499021.h