5825|14

80

帖子

0

TA的资源

一粒金砂(中级)

楼主
 
都说wince只支持UNICODE,所有的字符串函数都要换成_wcs系列的,可是为什么我用strcpy,strcat照样可以运行呢,至少在模拟器上运行没问题。只有AfxMessageBox这样的函数才有问题。
[code]
FILE* f = fopen("text","a");
char* text =(char*)malloc(4);
strcpy(text,"www");
//AfxMessageBox(text);
fprintf(f,text);
fclose(f);
[code]

最新回复

在微软的windows 2000, xp, nt等平台是有两种api的,unicode和ascII。 而且对外一般都是ascII,这个是因为要和win98等只有ascII api的系统兼容。 而在ce下不用和以前的系统兼容,所以直接就用unicode了。这里说的api都是系统的对外接口。 如果只是第三方的一些库,用什么版本是没有规定的。  详情 回复 发表于 2008-7-22 13:54
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
标题忘记写了...自己顶一下,
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
strcpy是C运行时库的,不属于WINCE范畴。还有,如果是E文环境下,你不用Unicode也行,不会出错。
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

4
 
用c/c++或其它的库是没有问题的。

但是用操作系统提供的api就肯定要用unicode版本的。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
关注下,我现在也在搞这方面的。我想知道运行strcpy时每个字符是占几个字节?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
strcpy使用的是char, 一个英文字符一个字节
wcscpy使用的是wchar, 一个英文字符两个字节
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
说wince只支持UNICODE,并不是说它不能用ASCII了,只是说WIN32 API里面和字符串有关的函数必须使用UNICODE做为参数。strcpy不是WIN32 API,是C的库函数,所以不存在问题。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

8
 
请问LS,按照你的意思,我移植的时候C库的函数是不是可以不动他,碰到系统的API就用multibytetowidechar()转换成UNICODE就可以呢。我现在移植的项目实在是太大了,一个一个的改char和一些字符串函数不知道要改到猴年马月,如果可以这样做的话,那工作量就会大大的减少HOHO。

请指教,这两天看UNICODE搞得有点糊涂
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 zhcf45 的回复:
请问LS,按照你的意思,我移植的时候C库的函数是不是可以不动他,碰到系统的API就用multibytetowidechar()转换成UNICODE就可以呢。我现在移植的项目实在是太大了,一个一个的改char和一些字符串函数不知道要改到猴年马月,如果可以这样做的话,那工作量就会大大的减少HOHO。

请指教,这两天看UNICODE搞得有点糊涂


可以,注册两都之间的转换就行!
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
对,就是这样的。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
不要想得太复杂,其实就是显示部分的API需要使用UNICODE,其他API都有定义成如下形式

#ifdef UNICODE
#define CreateFile  CreateFileW
#else
#define CreateFile  CreateFileA
#endif // !UNICODE


如果你不想转UNICODE,直接用 CreateFileA 就行了。

strcpy 在VC中有 C Runtime支持,在CE上有CE C Runtime,所以能使用。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
呵呵,听了几位高手的解答,胜读十年书啊,多谢各位了,可惜此贴不是我开的,不能加分
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 
nbcool:
根据你所说的,我把API函数全都加上A,可是还是报错
>StateMachine.obj : error LNK2019: unresolved external symbol MoveFileA referenced in function "public: int __cdecl StateMachine::eraseWord(char *,char *,char *,char const *)" (?eraseWord@StateMachine@@QAAHPAD00PBD@Z)
1>StateMachine.obj : error LNK2019: unresolved external symbol DeleteFileA referenced in function "public: int __cdecl StateMachine::eraseWord(char *,char *,char *,char const *)" (?eraseWord@StateMachine@@QAAHPAD00PBD@Z)

这是为什么呢
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

14
 
他说的是windows 2000,windows nt这种既支持UNICODE,又支持ASCII的系统,可以这样用。wince并没有这样的定义,它很明确,所有的win32 API都是UNICODE的,不用2个版本。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

15
 
在微软的windows 2000, xp, nt等平台是有两种api的,unicode和ascII。

而且对外一般都是ascII,这个是因为要和win98等只有ascII api的系统兼容。

而在ce下不用和以前的系统兼容,所以直接就用unicode了。这里说的api都是系统的对外接口。

如果只是第三方的一些库,用什么版本是没有规定的。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表