最近在做一个ObjectArx二次开发项目,刚开始是在AutoCAD2005平台下使用VC.net2002 + ObjectArx2005开发的,后来用户要求迁移到AutoCAD2008平台下,于是使用VC.net2005重新编译了一下这个工程,发现一堆error和warring,经过一番痛苦的修改,终于编译通过。现将问题总结如下:
1. VS2005使用的是UNICODE,而VS2002使用的是ANSI;因此直接转换过去的工程需要在工程设置中“使用Unicode字符集”(项目->属性->配置属性->字符集->使用Unicode字符集)。
2. 转换后的工程的源码中存在最大的问题是关于字符串的,主要有以下几个方面:
(1) 字符串文字需使用 _T("") 宏,不能直接使用双引号括起来,如:_T("Jimmy");
(2) 定义字符串需使用TCHAR,而不能使用char;
(3) 相关字符串的操作需使用兼容Unicode的函数,如:
UNICODE ANSI
---------------------------------------
_tcsicmp stricmp
lstrlen strlen
lstrcpy strcpy
lstrcpyn strncpy
_stprintf sprintf
1. VS2005使用的是UNICODE,而VS2002使用的是ANSI;因此直接转换过去的工程需要在工程设置中“使用Unicode字符集”(项目->属性->配置属性->字符集->使用Unicode字符集)。
2. 转换后的工程的源码中存在最大的问题是关于字符串的,主要有以下几个方面:
(1) 字符串文字需使用 _T("") 宏,不能直接使用双引号括起来,如:_T("Jimmy");
(2) 定义字符串需使用TCHAR,而不能使用char;
(3) 相关字符串的操作需使用兼容Unicode的函数,如:
UNICODE ANSI
---------------------------------------
_tcsicmp stricmp
lstrlen strlen
lstrcpy strcpy
lstrcpyn strncpy
_stprintf sprintf
posted @ 2009-09-03 09:16 ChiminLau 阅读(235) 评论(0) 编辑
