马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 newer 于 2014-10-23 12:21 编辑
http://blog.csdn.net/sanqima/article/details/40391003
在AutoCAD的发展史中有几次重要的分水岭,其中最重要的一次是cad2006和cad2007之间的分水岭。R14、cad2002、cad2004、cad2005、cad2006都使用“多字符集”,而cad2007、cad2008、cad2009等是采用“Unicode”字符集,即07以后都采用“Unicode”字符集。
其次,ACAD/ARX的SDK版本都说三年一版,那究竟什么是三年一个版本?简单来说就是CAD04,05,06是一代,CAD07,08,09是一代,CAD 10 11又是一代。同一代ACAD平台上的ARX可以相互通用,可以加载成功。这是为什么呢?根本原因在于,它们所依赖的运行时库不同。举例来说,CAD07,08,09依赖的是mfc80u.dll等这一套,CAD 2010和2011依赖的是mfc90u.dll这一套,它们的底子不一样,所以才会造成加载的问题。
再回到和VS关系的问题上来说,我们知道说07 08 09要用VS2005, 10 11要用 VS 2008。
本文主要讨论,Autocad2006的开发问题。使用工具如下:
VS2010 + ObjectArx2012 + Daffodil安装包 + ObjectArx2006 +VC7.0编译器
1)首先安装VS2010,再安装ObjectArx2012、Daffodil、ObjectArx2006
2)安装完后,打开VS2010,点击工具栏上的“文件”---》新建/项目 ——》Visual C++/ObjectARX -->ObjectARX/DBX/OMF Project
解决方案:Solu4 ,工程名:ArxProj4---》OK,如图(1)所示。
3)设置开发者前缀和勾选“MFC”支持。如图(2)、图(3)所示。
4)右击工程ArcProj4-->属性,进行配置,具体请看步骤5)——》10)
5)在【配置属性】/【常规】设置输出目录、中间目录都为 .\Debug2006\
平台工具集选择“v70”,字符集选择“多字符集” ,如图(4)所示。
6)在【配置属性】/【调试】设置cad.exe的路径,比如:E:\Program Files\AutoCAD 2006\acad.exe
7)在【配置属性】/【VC++目录】里,设置VC7.0的包含目录和库目录
包含目录(即include路径):
E:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\include;
E:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include;
E:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include;
E:\Program Files\Microsoft Visual Studio .NET\Vc7\include;
库目录(即lib路径):
E:\Program Files\Microsoft Visual Studio .NET\Vc7\lib;
E:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\lib;
E:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\lib;
注意它们之间,要用英文的;隔开。
8)在【C/C++】选择卡里,添加“附加包含目录”:D:\ObjectARX\ObjectArx2006\inc;
添加“解析#using引用”:D:\ObjectARX\ObjectArx2006;
在【C/C++】/【预处理器】,添加预处理定义:_ARX_VEC=0x0162
在【C/C++】/【语言】,不强制For循环范围中的合规性,兼容VC6的语法。
在【C/C++】/【预编义头】,修改文件的输出路径: .\Debug2006/$(TargetName).pch (注意中间的一个斜杠与第一个斜杠不同)
在【C/C++】/【输出文件】,ASM列表位置: .\Debug2006/ (首尾的两个斜杠不同)
对象文件名: .\Debug2006/
程序数据库文件名:添加 .\Debug2006/
9)在【链接】选项卡里,设置arx文件的存放位置:Debug2006/
附加库目录:D:\ObjectARX\ObjectArx2006\lib;
在【链接】/【输入】,设置附加依赖项:rxapi.lib;acdb16.lib;acge16.lib;acad.lib;acedapi.lib;(一共有5个,用英文的;分开)
模块定义文件:ArxProj4.def
在【链接】/【调试】,设置“生成程序数据库文件”: .\Debug2006/ArxProj4.pdb (注意中间的一个斜杠与第一个斜杠不同)
在【链接】/【调试】,设置导入库:.\Debug2006/ArxProj4.lib
10)在【浏览信息】/【常规】,设置输出文件:.\Debug2006/$(TargetName).bsc(注意中间的一个斜杠与第一个斜杠不同)
进行测试:
11)新建一个.def文件,命名为:ArxProj4,内容如下:
- LIBRARY "sanArxProj4"
-
- EXPORTS
- acrxEntryPoint PRIVATE
- acrxGetApiVersion PRIVATE
12)注册一个student的命令,在acrxEntryPoint.cpp中,调用下面的语句
- // - sanArxProj4.student command (do not rename)
- static void sanArxProj4student(void)
- {
- // Add your code for command sanArxProj4.student here
- acutPrintf(TEXT("I love ObjectArx."));
- }
13)右击工程ArxProj4-->生成,如下:
图(a)成功生成.arx文件
14)按F5启动调试,在cad2006的命令行窗口,输入appload -->加载ArxProj.arx 文件--> student,得到如下结果:
图(b)加载arx文件的执行结果:“I love ObjectArx”
图示操作:
图(1)创建一个ObjectArx工程:ArxProj4
图(2)设置一个开放者前缀,可任意设置
图(3)勾选“MFC”支持
图(4)在【常规】里,修改输出目录、中间目录、编译平台与字符集
图(5)选择cad2006\acad.exe的安装路径
图(6)添加VC7.0的包含目录和库目录,分别为FrameworkSDK\include、Vc7\PlatformSDK\Include、Vc7\atlmfc\include、Vc7\include; Vc7\lib、Vc7\atlmfc\lib、Vc7\PlatformSDK\lib
图(7)设置【C/C++】的附加包含目录和“解析#using引用”目录
图(8)不强制For循环范围的合规性
图(9)设置“预编译头”的输出路径
图(10)设置ASM列表位置、对象文件名、程序数据库文件名的输出路径
图(11)在【链接器】里,设置输出文件和附加库文件
图(12)设置附加依赖项:rxapi.lib acdb16.lib acge16.lib acad.lib acedapi.lib(一共5个)
图(13)在【连接器】,设置“生成程序数据库文件”
图(14)在【高级】,设置导入库
图(15)在【浏览信息】选择卡,设置输出文件
参考文献:AutoCAD ObjectArx(VC)开发基础与实例教程. 张帆.朱文俊.2014年
|