AutoCAD 二次开发学习系列【2】 - 开始第一个工程
2012-12-02 18:11
447 查看
在了解了AutoCAD所支持的开发环境后,咱们开始做一个项目吧。这个是在Windows平台的,使用VS 2010。首先我把一些主要的步骤列出来,然后把其中碰到的问题总结一下。
准备环境:
首先下载AutoCAD的SDK,我用的是ObjectARX_2013_Win_64_and_32Bit.exe,可以在这里下载 http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=785550 我安装到了默认目录C:\ObjectARX 2013,大家可以看一下里面的目录结构,可以清楚到看到通用SDK包中所有的套路。有inc目录是放头文件的,然后也有一些头文件是分x86和x64的。还有分32bit和64bit的lib目录。肯定也会有sample目录,是给大家更快的捷径去了解ARX的开发。
推荐下载AutoCAD SDK的doc文档。这个在下载SDK的页面里有 【Download ObjectARX Documentation (100 MB)】。
开始新工程:
开发的ARX目标文件,在WIN平台上都是DLL,会被连接到AutoCAD程序的进程控件里,只不过它的建议后缀名改成了arx,和DLL是一样的。
创建的VS工程的类型也是动态链接库(Dynamic Library (.dll))。
针对不同的平台(platform)和配置(configuration)设置它的head文件搜索目录,库文件搜索目录,依赖的.lib文件。
代码生成时,需要的runtime library 是 多线程 DLL(multi-thread DLL)。
可以定义自己的导出文件(DEF),也可以图省事,直接用SDK中默认的DEF文件(./inc/AcRxDefault.def)。
编写代码
编写函数acrxEntryPoint,这个类似于DLL中的DLLMain,是ARX中所有信息进入的通道入口。
可以不用编写acrxGetApiVersion函数,因为在默认的rxapi.lib中已经实现了。
其他细节在ARX sdk的doc目录下,有arxdev.chm文件,里面的【Setting up an ObjectARX Project Using Microsoft Visual Studio】有详细介绍。
碰到的问题
生成的目标文件是个DLL,不是EXE。
在AutoCAD加载目标Arx时,说“acrxGetApiVersion 在 c:\users\......\arxdemo.arx 中未找到。”本打算在工程中声明并实现acrxGetApiVersion,但一直未找到其原型声明。后来发现直接使用SDK中默认的DEF文件,则可以把SDK中已实现的acrxGetApiVersion暴露出来。
arxdemo.arx 与此版本的 AutoCAD 不兼容。本以为是acrxGetApiVersion的返回值和AutoCAD的版本号不一致导致。后来发现原因是目标arx是32位的,而AutoCAD是64位的,自然是不兼容。(惭愧呀)
准备环境:
首先下载AutoCAD的SDK,我用的是ObjectARX_2013_Win_64_and_32Bit.exe,可以在这里下载 http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=785550 我安装到了默认目录C:\ObjectARX 2013,大家可以看一下里面的目录结构,可以清楚到看到通用SDK包中所有的套路。有inc目录是放头文件的,然后也有一些头文件是分x86和x64的。还有分32bit和64bit的lib目录。肯定也会有sample目录,是给大家更快的捷径去了解ARX的开发。
推荐下载AutoCAD SDK的doc文档。这个在下载SDK的页面里有 【Download ObjectARX Documentation (100 MB)】。
开始新工程:
开发的ARX目标文件,在WIN平台上都是DLL,会被连接到AutoCAD程序的进程控件里,只不过它的建议后缀名改成了arx,和DLL是一样的。
创建的VS工程的类型也是动态链接库(Dynamic Library (.dll))。
针对不同的平台(platform)和配置(configuration)设置它的head文件搜索目录,库文件搜索目录,依赖的.lib文件。
代码生成时,需要的runtime library 是 多线程 DLL(multi-thread DLL)。
可以定义自己的导出文件(DEF),也可以图省事,直接用SDK中默认的DEF文件(./inc/AcRxDefault.def)。
编写代码
编写函数acrxEntryPoint,这个类似于DLL中的DLLMain,是ARX中所有信息进入的通道入口。
可以不用编写acrxGetApiVersion函数,因为在默认的rxapi.lib中已经实现了。
其他细节在ARX sdk的doc目录下,有arxdev.chm文件,里面的【Setting up an ObjectARX Project Using Microsoft Visual Studio】有详细介绍。
碰到的问题
生成的目标文件是个DLL,不是EXE。
在AutoCAD加载目标Arx时,说“acrxGetApiVersion 在 c:\users\......\arxdemo.arx 中未找到。”本打算在工程中声明并实现acrxGetApiVersion,但一直未找到其原型声明。后来发现直接使用SDK中默认的DEF文件,则可以把SDK中已实现的acrxGetApiVersion暴露出来。
arxdemo.arx 与此版本的 AutoCAD 不兼容。本以为是acrxGetApiVersion的返回值和AutoCAD的版本号不一致导致。后来发现原因是目标arx是32位的,而AutoCAD是64位的,自然是不兼容。(惭愧呀)
相关文章推荐
- AutoCAD 二次开发学习系列【4】 - 实现CPropertySheet进行用户交互
- AutoCAD 二次开发学习系列【5】 - 开发过程中的问题整理
- AutoCAD 二次开发学习系列【3】 - 注册外部命令
- AutoCAD 二次开发学习系列【1】- 初步了解开发环境
- AutoCAD 二次开发学习系列【6】 - 视口
- Struts2学习——(二)开发实例-我的第一个Struts2工程
- Android开发学习系列-----构建你的第一个应用(2)
- TFS二次开发系列:三、TFS二次开发的第一个实例
- AutoCAD.net/Map 3D/AIMS/MapGuide/Civil 3D二次开发学习指南
- playframework学习笔记1 -- 开发环境和第一个工程
- AutoCAD二次开发之.net API学习笔…
- AutoCAD二次开发之.net API学习笔…
- Windows Phone 7开发技术在线学习系列活动正式开始
- Windows Phone 7开发技术在线学习系列活动正式开始
- 安卓训练-开始-开发你的第一个应用-创建安卓工程
- AutoCAD二次开发技术在工程图纸绘制中的应用
- 从头开始学习开发django系列-1、配置环境,以windows为例
- Wowza服务器系列(2):开始二次开发
- 使用ObjectARX进行AutoCAD的二次开发 ——新建工程
- AutoCAD .NET API二次开发学习指南