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!