![]() |
objectarx从vc6代码升级到vs2005时的主要工作和注意事项总结 - 精华帖集合
objectarx从vc6代码升级到vs2005时的主要工作和注意事项总结 - 精华帖集合
www.dimcax.com objectarx从vc6代码升级到vs2005时的主要工作和注意事项总结 objectarx从vc6代码升级到vs2005时的主要工作和注意事项总结 由于autocad从2007起,要求必须采用unicode字符环境,而相应的c++编译器也需要调整,所以以往的vc6代码必须升级重新编译。但vc6到vs2005的编程环境有了很大的不同,主要是默认字符集从ansi换成了unicode,另外vs2005的编译器对标准c++支持更多,所以代码特别是字符串编码不规范,没有考虑兼容ansi与unicode环境的。升级时很容易困扰,根据死贫道不死道友的和谐精神,记录这段时间升级代码的情况,总结如下: 1:设置问题: a) 设置新的inc和lib附加目录,参考arxlabs说明 b) 按lib目录中的库名称添加链接用的链接库。 2:代码修改: a) 头文件:系统头文件不能加.h b) 将所有常量字符串添加“_t()"宏 c) 将所有c++运行时库的字符串操作函数换成_tcs格式,如:strlen->_tcslen,strcpy->_tcscpy d) vc支持常量默认int类型,vs2005不支持,将所有const 变量名->const int 变量名 e) vs2005与vc6的变量作用域不同,不在支持 for(int i;...) for(i;....) 请手工改成 int i; for(i;...) for(i;...) f) 类或函数过时问题 cad2007及以上版本不支持如下发送命令到cad的方法 lresult lresult=sendmessage(hwnd, wm_copydata, (wparam)adsw_acadmainwnd(), (lparam)&cmdmsg); 请改成 acdocmanager->sendstringtoexecute(acdocmanager->curdocument(), cmd); acdbmtext 的成员函数变化较大,不支持的函数需要手工改变 还有dao访问数据库类,建议替换成ado方式。 g) 对于需要使用多字节字串的函数,请使用如下两个函数替换 widechartomultibyte 宽字节转多字节 multibytetowidechar 多字节转宽字节 h) 类和结构命名冲突问题 请用以下3种方式修改 1:导入com库的,可以rename或命名空间 2:可以修改代码的,改某个类名 基本上就这么多,记起了再补充吧 [ ] 不错支持. dao ,可以在2007以上版本运行 通过测试 頂 good good study day-day up! 悠悠,没有说不能用dao,仅仅建议 悠悠,没有说不能用dao,仅仅建议 学习楼主的知识! 因為專業, 所以精彩 !!! 樓主,如果遇到istrstream類怎麼辦? good good study day-day up! |
所有的时间均为北京时间。 现在的时间是 12:18 PM. |