找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 963|回复: 20

[求助]:同时开发支持2002和2004,代码怎么共用?

[复制链接]
发表于 2005-12-28 15:16:21 | 显示全部楼层 |阅读模式

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

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

×
2004以后需要用.net开发了.这样需要编写两套代码,修改等不方便.有没有什么好办法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-28 18:35:52 | 显示全部楼层

Re: [求助]:同时开发支持2002和2004,代码怎么共用?

最初由 wowolwj 发布
[B]objectARX2002 needs vc6.0
and objectARX2004 2005 2006 need net vc7.0
we use the same code for the two system, is that good?[/B]


如果程序写的合适,以后升级应该不是问题!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-29 12:58:15 | 显示全部楼层
没办法的,连编译器都不通用,只能选择单一版本了,或者退回到LISP
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-29 13:16:48 | 显示全部楼层
采用宏定义就可以使R2000和R2004代码共享了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-30 10:38:13 | 显示全部楼层

Re: Re: [求助]:同时开发支持2002和2004,代码怎么共用?

最初由 david96007 发布
[B]

如果程序写的合适,以?.. [/B]


合适是什么意思?
同时开发有没啥好意见?

哪些代码需要宏定义?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-30 16:53:15 | 显示全部楼层
别卖关子,谁会用宏来解决,编译环境不一样,快说如何处理,不知到也就算了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-2 16:50:05 | 显示全部楼层
以前有帖子说能用vc6开发 arx2004的,但是我没有成功过

现在还是一个代码在两个环境编译 修改设置一下包含的头文件就通过了

代码一点都可以不变
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-2 17:21:54 | 显示全部楼层
要包含那些头文件啊,我的在2004不能不行
正在犯愁: (  5555555555~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-2 20:58:20 | 显示全部楼层
最好的办法就是全部自已写,不要用向导,我现在做的项目就是代码可以在两个版本上自由编译
不受限制,当然这样一来可能会对高版本的有些功能作一些限制,但大多数ARX的功能都没怎么变
特别是基础机制不变
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-18 15:05:06 | 显示全部楼层
在R2002中编写的代码,直接将工程导入到.net环境就行,此时在工程中根据不同的版本设置不同的宏来控制具体的版本,在你的工程设置中找到这些宏WIN32,_DEBUG,_WINDOWS,_WINDLL,_AFXDLL,_MBCS,_AFXEXT,在其中添加一项,如R2002,
他的功能同 #define R2002。同样在.net中设置宏R2004、R2005、R2006等等
通过这个办法,就可以实现一套代码,多个版本。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-3-20 19:17:57 | 显示全部楼层
也觉得维护AutoCAD的ARX开发版本太麻烦了,需要一个决定方案
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-3-21 11:13:59 | 显示全部楼层
以下是一头文件,可以参考:
编译2004arx时 /D "ACAD2004"
编译2002arx时 /D "ACAD2002"
也可以编译R14之ARX
但应注意在编译环境中指定头文件和库文件路径,这一点因两中程序分别用VC6和VC7,在不同环境中指定,互不干绕
代码中两种版本存在差异的地方如下处理:
#if        ACAD2000
  CAcModuleResourceOverride resOverride;
#elif        ACAD2004
  CAcModuleResourceOverride resOverride;
#else
  CTemporaryResourceOverride thisResource;
#endif

//STDAFX.H
#if defined( _DEBUG) && !defined(DEBUG_AUTOCAD)
    #pragma message("Building debug version of modal.arx to be used with non-debug/Prod AutoCAD")
    #define _DEBUG_WAS_DEFINED
    #undef _DEBUG
#endif

#include <afxwin.h>
#include <afxcmn.h>                        // MFC support for Windows 95 Common Controls
#include <afxdb.h>
#include <math.h>

#include "resource.h"
#include "rxmfcapi.h"           // ObjectARX MFC support
//#include "resourcehelper.h"

#ifdef _DEBUG_WAS_DEFINED
    #define _DEBUG
    #undef _DEBUG_WAS_DEFINED
#endif


#if ACAD2002
  extern  HINSTANCE _hdllInstance ;
  //#include "migrtion.h"//R14 to R15
  #include "acdb.h"               // acdb definitions
  #include "rxregsvc.h"           // ARX linker
  #include "dbapserv.h"           // Host application services
  #include "aced.h"               // aced stuff
  #include "adslib.h"             // RXADS definitions
  #include "acdocman.h"           // MDI document manager
  #include "rxmfcapi.h"           // ObjectARX MFC support
  #include "adui.h"
  #include "acui.h"
  #include "rxmfcapi.h"           // ObjectARX MFC support
  #include "AcExtensionModule.h"  // Utility class for extension dlls
  #define  acdbCurDwg  acdbHostApplicationServices()->workingDatabase
  //#define  acdbSetCurrentView acedSetCurrentView  
  class CAcModuleResourceOverride;
  #pragma comment(lib, "rxapi.lib")
  #pragma comment(lib, "acrx15.lib")
  #pragma comment(lib, "acdb15.lib")
  #pragma comment(lib, "acutil15.lib")
  #pragma comment(lib, "acge15.lib")
  #pragma comment(lib, "acgiapi.lib")
  #pragma comment(lib, "achapi15.lib")
  #pragma comment(lib, "acISMobj15.lib")
  #pragma comment(lib, "acad.lib")
  #pragma comment(lib, "acedapi.lib")
  #pragma comment(lib, "acsiobj.lib")
  #pragma comment(lib, "adui15.lib")
  #pragma comment(lib, "acui15.lib")
#elif ACAD2004
  extern  HINSTANCE _hdllInstance ;
  #include "acdb.h"               // acdb definitions
  #include "rxregsvc.h"           // ARX linker
  #include "dbapserv.h"           // Host application services
  #include "aced.h"               // aced stuff
  #include "adslib.h"             // RXADS definitions
  #include "acdocman.h"           // MDI document manager
  #include "rxmfcapi.h"           // ObjectARX MFC support
  #include "adui.h"
  #include "acui.h"
  #include "rxmfcapi.h"           // ObjectARX MFC support
  #include "AcExtensionModule.h"  // Utility class for extension dlls
  #define  acdbCurDwg  acdbHostApplicationServices()->workingDatabase
  #define  acdbSetCurrentView acedSetCurrentView  
  class CAcModuleResourceOverride;
  #pragma comment(lib, "rxapi.lib")
  #pragma comment(lib, "acdb16.lib")
  #pragma comment(lib, "acge16.lib")
  #pragma comment(lib, "acgiapi.lib")
  #pragma comment(lib, "achapi16.lib")
  #pragma comment(lib, "acISMobj16.lib")
  #pragma comment(lib, "acad.lib")
  #pragma comment(lib, "acedapi.lib")
  #pragma comment(lib, "adui16.lib")
  #pragma comment(lib, "acui16.lib")
#else
  extern HINSTANCE _hdllInstance ;
  #include "RESOURCEHELPER.H"
  #pragma comment(lib, "acedapi.lib")
  #pragma comment(lib, "rxapi.lib")
  #pragma comment(lib, "acad.lib")
  #pragma comment(lib, "acgiapi.lib")
  #pragma comment(lib, "libacge.lib")
  #pragma comment(linker, "/base:0x1c000000")
  #pragma comment(linker, "/entry:DllEntryPoint@12")
#endif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-3-22 23:38:09 | 显示全部楼层
在工程中设置如附件所示,可以把R14和R2000,R2002设置在一个工程中,
可以把R2004和R2006设置在一个工程中,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-27 02:08 , Processed in 0.469828 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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