如何将程序编译成Unicode版本?

mbctb 2010-03-05 09:40:07
在学《Windows程序设计》,很多人都读过的。

这本书上说,如果定义了UNICODE,那程序会被编译成Unicode版本,所有的字符都是Unicode字符,如果没有定义,那么程序就会被编译成ANSI版本,所有字符均是ANSI字符。

我编写了一个程序,编译以后,结果发现是ANSI版本的,ASCII字符占一个字节,汉字占两个字节。可是如何把它编译成Unicode版本呢?(也就是英文字母和汉字均占两个字节)

按那本书上的说法,如果定义了UNICODE(还有什么_UNICODE,弄得很胡涂),那么就会被编译成UNICODE版本,可是如何定义呢?是我在程序开头定义,还是在头文件里定义?


...全文
215 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
magic7004 2010-04-04
  • 打赏
  • 举报
回复
win98以后的操作系统内核都是UNICODE的,win98和win98以前的是ANSI的。
不过所有版本的windows中GetProcAddress函数的参数一定是ANSI的
mbctb 2010-03-10
  • 打赏
  • 举报
回复
另外我还想问一句:XP从内核上支持UNICODE吗?
mbctb 2010-03-10
  • 打赏
  • 举报
回复
引用 6 楼 magic7004 的回复:
应该加UNICODE和_UNICODE, 这两个是不一样的,一个是在TCHAR.h中定义的,另一个是在windows.h中定义的。TEXT宏就需要UNICODE,_T宏是需要_UNICODE的。

貌似是这样。最好两个都加上。

对对,就是这样的。昨天晚上我就是这样做的,成功了!但一个人连续发贴最多三个,我无法跟贴说明。

昨天我百度了一下,有人说《Windows高级编程指南》一书中讲得很详细。我下载了看了一下,上面说了UNICODE是Win32中的。我于是尝试又加了一个UNICODE,也就是说两个都加了,结果就运行成功了!已经编译成UNICODE版本了。而不需要“在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup。”

可能因为我用的是SDK/API编程方式,而上面的设置大概是针对MFC方式。
magic7004 2010-03-10
  • 打赏
  • 举报
回复
应该加UNICODE和_UNICODE, 这两个是不一样的,一个是在TCHAR.h中定义的,另一个是在windows.h中定义的。TEXT宏就需要UNICODE,_T宏是需要_UNICODE的。

貌似是这样。最好两个都加上。
logiciel 2010-03-10
  • 打赏
  • 举报
回复
引用 2 楼 mbctb 的回复:
引用 1 楼 yyg990441 的回复:要作成Unicode程序,你需要在Settings对话框中加上_UNICODE这个常数,还需要在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup。
你能再说得详细一点吗?settings对话框从哪里启动?后面的设置从哪里启动?

另外:你们的程序一般编译为UNICODE版本的吗?


选择Project->Settings->C/C++,在Category中选Preprocessor,然后在Preprocessor definitions中加_UNICODE.

如无特别需求,不必做以上设置.
mbctb 2010-03-09
  • 打赏
  • 举报
回复
能说得详细一点吗?我用的是VC++6.0
mbctb 2010-03-05
  • 打赏
  • 举报
回复
我的意思是:如果大家的程序都编译成ANSI版本,那我也没有必要编译成Unicode版本了。

ANSI版本的话,只是英文字母占一字节,汉字占两字节而已,处理起来也没什么复杂的。

我不太清楚,如果编译成ANSI版本,在XP,2003,以及Vista和2007下是否能运行正常?
mbctb 2010-03-05
  • 打赏
  • 举报
回复
引用 1 楼 yyg990441 的回复:
要作成Unicode程序,你需要在Settings对话框中加上_UNICODE这个常数,还需要在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup。

你能再说得详细一点吗?settings对话框从哪里启动?后面的设置从哪里启动?

另外:你们的程序一般编译为UNICODE版本的吗?
yyg990441 2010-03-05
  • 打赏
  • 举报
回复
要作成Unicode程序,你需要在Settings对话框中加上_UNICODE这个常数,还需要在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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