将自己的程序编译成Unicode版本

原创 2008年10月01日 16:43:00

1. 添加 UNICODE 和 _UNICODE 预处理定义

位置:Project Settings -> C/C++ -> Preprocessor definitions

添加了这两个定义后,MFC的一些内置类型如 TCHAR、CString 都将转为支持宽字符类型(wchar_t)

2. 使用宽字符相关类型,如:

char -> TCHAR、char * -> LPTSTR、const char * -> LPCTSTR

3. 对字符串常量使用 _T() 宏

4. 替换C库中的中字符串操作函数,如 strlen -> _tcslen、strcmp -> _tcscmp 等

类似的还有C库中字符串与数字的转换函数,如 atoi -> _ttoi、itoa -> _itot 等

5. 将 Project Settings -> Link -> Output -> Entry Point 设为 wWinMainCRTSTartup

否则会有如下错误:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol?_WinMain@16

6. C++标准库中的string,有对应的宽字符版本wstring,两者均为basic_string的特化版本

可在StdAfx.h中:

#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif

然后在代码中使用 tstring 即可,类似的还有 fstream/wfstream、ofstream/wofstream 等

7. 宽字符版本的英文字符仍可直接与整型值进行比较,如:

CString s = _T("ABC");
ASSERT(s[0] == 'A');

8. 对于仍需使用ANSI字符串的地方,如第三方类库的接口,仍可继续使用;如需进行Unicode字符串和ANSI字符串的互转换,可使用 MultiByteToWideChar 和 WideCharToMultiByte

UNICODE和ANSI的区别

一、什么是Unicode   先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实...
  • u010679895
  • u010679895
  • 2013年08月15日 19:15
  • 866

英文操作系统中使用非Unicode版本的中文程序

在英文操作系统中
  • chenlycly
  • chenlycly
  • 2014年06月06日 23:54
  • 9847

反编译C程序为汇编代码,汇编代码执行过程的分析与思考

张韩+ 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 系统:32位Ubuntu14.0...
  • u013647453
  • u013647453
  • 2015年03月08日 10:58
  • 847

在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤

在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤 ISSkin是Code jock 公司出品的Inno Setup 皮肤插件,用于为Inno制作的安装程序提供皮肤功能。 ...
  • autumn20080101
  • autumn20080101
  • 2013年04月26日 14:12
  • 1122

VC++ 6.0中关于UNICODE和_UNICODE的问题总结

在TCHAR.H头文件中总体的结构如下: /* For backwards compatibility */为了向后的兼容性 #ifdefine _UNICODE     //如果定义了_UN...
  • u012132050
  • u012132050
  • 2015年04月18日 16:00
  • 835

Java:Unicode简介(处理数据显示异常)

一般对于新手来说,由于对Unicode编码不够了解,所以数据编码异常是经常会碰到的问题。例如页面显示字符异常等 Unicode是一种字符编码规范 。      先从ASCII说起。ASCII是用来表...
  • sovy_cool
  • sovy_cool
  • 2017年02月07日 16:48
  • 183

MFC与unicode的纠结

关于MFC的小总结
  • w417950004
  • w417950004
  • 2015年09月17日 20:31
  • 910

编译成release版本与debug版本的程序有何执行上的区别?

原文地址::http://blog.csdn.net/lingxiu0613/article/details/7924755 相关网帖 1、Debug 和 Release 编译方式的本质区别-...
  • xqhrs232
  • xqhrs232
  • 2014年01月24日 17:31
  • 683

谈谈Unicode编码

谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这...
  • jc_benben
  • jc_benben
  • 2017年01月12日 11:19
  • 229

微软宣布.NET Native预览版 C#可编译为本地机器码

微软宣布.NET Native预览版 C#可编译为本地机器码 投递人 itwriter 发布于 2014-04-03 17:05 评论(70) 有6766人阅读  原文链接  [收藏]  «...
  • tyb1222
  • tyb1222
  • 2014年04月04日 09:37
  • 1336
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将自己的程序编译成Unicode版本
举报原因:
原因补充:

(最多只允许输入30个字)