首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

请问:vc6.0移植到EVC,里面有很多的char报错,请教小弟我应该如何呢

2012-02-28 
请教:vc6.0移植到EVC,里面有很多的char报错,请问我应该怎么呢?各位大虾好!我将一个vc6.0的程序移植到EVC下

请教:vc6.0移植到EVC,里面有很多的char报错,请问我应该怎么呢?
各位大虾好!我将一个vc6.0的程序移植到EVC下,遇到了关于数据类型转换的问题。我是个新手,对于应该用什么样的数据类型和函数比较迷惑,希望各位大侠指教!
我是这样做的,不知道对不对:
  将VC的程序全部粘贴到EVC下,编译报错。第一个错误是CreateFile,说其中一个参数不能char[16],我将其改为TCHAR,结果其前面用到的sprintf报错,我又将其改为swprintf,报错其源字符串不能为char型。
我这样改下去对么?如果对,我这个程序里一共有1000多个char。有没有简单的方法?我想用typedef重新定义char,还不行,呵呵。
  希望各位大虾给于帮助,谢谢!

[解决办法]
不要定义UNICODE
[解决办法]
直接移植问题肯定不少的,还是老老实实的改吧,不要偷懒
[解决办法]
http://tag.csdn.net/Article/27709098-bdbe-433d-bd87-cb2bdb6398d6.html
看看这个吧

[解决办法]
我介绍下吧 EVC支持 unicode 和 ansi 两种 CRT 函数,但是由于WinCE的环境造成很多系统API只支持unicode,所以一般都要用UNICODE宏,你去掉这个宏是不对的。

针对你新手的情况,比较快速的方法是应该利用你最熟悉的环境解决所有字符串问题,然后再移植到EVC。

1.打开VC6 的C++ 编译环境:定义 UNICODE,_UNICODE 两个宏,去掉_MBCS的宏,这样VC6就在UNICODE条件下编译,首先应该解决这里的所有问题。记得代码要加上include <tchar.h>

2.遇到纯粹字符串处理时,可以不更改CRT函数,但是遇到系统的API,则是需要处理的。比如,CreateFile ,这是一个多次被重定义的API,你如果用_MBCS 它就变成了CreateFileA,这样你的字符串可以表示为("\\myfile.txt"),但是你现在换成了UNICODE,_UNICODE 环境,它就变成了CreateFileW,这时你就应该用TEXT("\\myfile.txt")来表示。

3.改成UNICODE版本后先调通VC6,再去移植。

这是一些基本要点。


[解决办法]
所谓的UNICODE就是宽字节,版主这个知道吗,就是一个普通的ANSI系统的字符都是用一个字节存储的,但是在WINCE下推荐用TCHAR,也就是2个字节存储一个字符,其实EVC是支持CHAR的,但是EVC的开发包很多API函数都是直接用TCHAR,而不是CHAR,所以你首先要做的就是把涉及到TCHAR的函数的char型数据全部换成tchar,由于体积大了一倍,所以最好是一个个改,有可能会有内存溢出的情况,如果当时没发现,到调试的时候再找,就要费很多的精力。
[解决办法]
evc 里全部使用unicode

热点排行