找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2209|回复: 2

[分享] ARX 2002升级到 ARX2007 步骤

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-5-20 01:10:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
最近一直在做升级,整理了一下心得,希望对大家有所帮助,另外如果哪位大虾还能补充,望赐教!

arx2002升级到 arx2007 步骤:

1:将arx2002整个工程目录拷贝到新的目录。用.net2005将原来的工程打开;打开时按提示将vc6的工程自动转化为2005的工程。

2:配置工程设置:在解决方案右键单击下属的工程树,选择菜单中的“属性”,弹出×××属性页对话框。
   a、在配置下拉框中选择“所有配置”;

   b、找到左端树结构中“配置属性->C/C++->常规”,在其右端“附加包含目录”项中填入Object  ARX2007下的inc文件夹路径和自己的附加文件夹的路径;警告等级选择1级(/w1)   

   c、找到左端树结构中“配置属性->链接器->常规”,在其右端“附加库目录”项中填入 ObjectARX2007下的lib文件夹路径;

   d、找到左端树结构中“配置属性->链接器->输入”,在其右端“附加依赖项”项中填入 “acad.lib AcCamera.lib acdb17.lib AcDblClkEditPE.lib acdbmgd.lib
AcDbMPolygon17.lib acedapi.lib AcFdEval.lib AcFdUi.lib acge17.lib acgiapi.lib achapi17.lib acismobj17.lib AcSceneOE.lib AcTc.lib AcTcUi.lib acui17.lib
adui17.lib aNav.lib aseapi17.lib asiapi17.lib axdb.lib oleaprot.lib rxapi.lib”;

   e、应用设置改动,确定退出配置属性。

3:修改代码:

    a、将所有arx函数中的设计调用char型参数的变量全部转化为ACHAR型;具体看情况:如果是常量型字符串作为参数,例如"提示"--》L"提示",(在前面加上L即可);如果是char型变量,则直接用强类型转换,例如char aa[10]; „„; acedalert(aa); --> char aa[10];„„;acedalert((ACHAR*)aa);;反之ACHAR型转化到char型时也可直接用强类型转化;

   b、acui类不能在.net2005下使用,所以所有用CAcUiDialog类做的对话框,全部改为基于CDialog类做;直接可以用CDialog替换所有的CAcUiDialog,并将CAcUiDialog的成员函数用相应的windows函数代替:

   c、由于vc6.0的变量作用域与.net2005作用域定义有差别,所以做好将for(int i = 0; „„)改为int i = 0; for(;„„)的形式;

   d、将
       void AddCommand(const char* cmdGroup, const char* cmdInt, const char* cmdLoc,    const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal)改写为

        void AddCommand(const ACHAR* cmdGroup, const ACHAR* cmdInt, const ACHAR* cmdLoc,    const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal);

并将其对应的声明处一一更正过来。

   e、将strcpy改写为strcpy_s

   f、有的关于模版编程的某些代码,编译时出现类似如下错误:

         D:\vc8project\ms_inc\calculate/RMPolicy.hpp(50) : warning C4346: 'crt::LineTyTraits<_LineTy>::LineTy' : dependent name is not a type         prefix with 'typename' to indicate a type
        D:\vc8project\ms_inc\calculate/RMPolicy.hpp(52) : see reference to class template  instantiation 'crt::RMBase<_LineTy>' being compiled
        D:\vc8project\ms_inc\calculate/RMPolicy.hpp(50) : error C2146: syntax error : missing ';'  before identifier 'LineTy'
        D:\vc8project\ms_inc\calculate/RMPolicy.hpp(50) : error C4430: missing type specifier - int  assumed. Note: C++ does not support default-int
        D:\vc8project\ms_inc\calculate/RMPolicy.hpp(58) : error C2061: syntax error : identifier  
'LineTy'
        D:\vc8project\ms_inc\calculate/RMPolicy.hpp(59) : see reference to class template  
instantiation 'crt::ReadPolicy<_LineTy>' being compiled  

    应该在那个语句声明中加入typename即可编译过去;

     例如:

     不能编译:
    typedef  LineTyTraits<_LineTy>::LineTy  LineTy;

     可以编译:
    typedef typename LineTyTraits<_LineTy>::LineTy  LineTy;

    最后其实升级从整体上来说就是两方面的升级:一是VC6.0编译器升级到VC8.0编译器,这部分是改C++语言;另外是ARX的升级,例如对UNICODE的全面支持;其次很少一部分就是VC与ARX的版本配对时所需做的改动。

评分

参与人数 1D豆 +2 收起 理由
ScmTools + 2 资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-10-7 14:12:30 | 显示全部楼层
:lol:lol:lol:lol
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

bbslevel 该用户已被删除
发表于 2015-11-1 23:05:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 08:50 , Processed in 0.191740 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表