手动配置ObjectARX 开发环境
这里以Visual Studio 2010(以下简称VS)+AutoCAD 2012(以下简称ACAD)为例,高版本的AutoCAD 可参考操作。
准备工作
首先,你得准备如下软件和开发包:VS 和ACAD(这不是废话嘛),然后是ObjectARX SDK 2012。
下面是详细的配置过程。
- 新建一个Win32 项目,并给项目一个名称,这里我们使用“ArxHello”作为项目名称,然后确定。
- 在接下来的应用程序向导下,在第一页中直接点击“下一步”,到第二个页面时,按下图的配置,应用程序类型中选择“DLL(D)”,附加选项中选择“空项目(E)”,然后点击“完成”
- 现在,你已经创建了一个空项目,接下来配置该项目。选择菜单中“项目”下的“XX 属性”:
在弹出的窗口中配置。
先选择“配置属性”下的“常规”,然后在右边的表格中,将“目标文件扩
展名”项的值从“.dll”改为“.arx”。
然后在“VC++目录”下选择“库目录”,点击右边的文本框,点击出现的“编辑”之后,弹出对话框,选择ObjectARX 2012 SDK 下的“lib-win32”目录,如下图。
接下来,点击左边树形结构下的“C/C++”,在右边的“附加包含目录”栏中点击那个向下的小三角形,点击“编辑”,弹出“附加包含目录”,点击那个文件夹图标,在下面的文本框中会出现一个按钮,点击该按钮,浏览到你所安装的
ObjectARX 2012 SDK 目录下的“inc”文件夹,添加,同样的操作再添加“inc-win32”(如果是64 位版本则选择inc-x64)。
添加完成之后效果如下图,具体位置取决于你放置ObjectARX SDK 的目录。
- 点击“C/C++”下的“代码生成”,将右边的“运行库”修改为“多线程DLL(/MD)”。
- 点击“链接器”下的“输入”,然后在右边点击“附加依赖项”选项下的“编辑”,在弹出的附加依赖项窗口中填入如下几个库文件:
rxapi.lib
acdb18.lib
acge18.lib
acad.lib
然后确定。
点击最下方的确定,所有的配置都得以完成。下面的工作与环境配置无关,用于测试是否配置成功。
在项目中添加两个文件。在“解决方案资源管理器”下的“源文件”上单击右键,在弹出的菜单中选择“添加”,然后选择“新建项”,如下图。
在弹出的对话框中选择“模块定义文件(.def)”,然后输入名称,最好是和项目名称保持一致,然后点击“添加”,完成定义文件的添加。
采用同样的操作,再添加一个C++文件(.cpp),添加完成之后,解决方案资源管理器下应该是下图这样的:
在ArxHello.cpp 中输入如下代码:
#include <rxregsvc.h>
#include <aced.h>
void initApp();
void UnloadApp();
void Hello();
void initApp()
{
acedRegCmds->addCommand(
L"Hello_Command",
L"HELLO",
L"您好",
ACRX_CMD_TRANSPARENT,
Hello);
}
void unloadApp()
{
acedRegCmds->removeGroup(L"Hello_Command");
}
void Hello()
{
acutPrintf(L"\nHello,ObjectArx.\n");
}
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg,void*
pkt)
{
switch (msg)
{
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(pkt);
acrxDynamicLinker->registerAppMDIAware(pkt);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
}
return AcRx::kRetOK;
}
在ArxHello.def 文件中输入如下内容:
LIBRARY ArxHello
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE
然后按F6,编译程序,如果运气比较好的话,编译成功。
最后打开AutoCAD,然后使用命令“ARX”再使用“L”加载所编译的arx