
目录前置概念软件版本对应关系下载所需文件安装 ObjectARX SDK安装 ObjectARX Wizards配置 Visual Studio 2022 必要组件创建第一个 ARX 项目项目属性检查与修改编写 Hello World 代码编译生成 .arx 文件设置 AutoCAD 信任路径加载并运行命令常见错误大全完整代码清单进阶提示1. 前置概念ARXAutoCAD Runtime eXtension编译后为 .arx 文件本质是 DLL可被 AutoCAD 加载实现自定义命令。ObjectARX SDKAutodesk 提供的开发包包含头文件、库文件、示例和文档。ObjectARX WizardsVisual Studio 的项目模板安装程序。acrxEntryPointARX 的入口函数必须被导出。acrxGetApiVersion另一个必须导出的函数用于版本校验。核心记忆ARX 特殊 DLL 两个必须导出的函数 一个命令注册。2. 软件版本对应关系AutoCAD 版本ObjectARX SDK 版本官方推荐 Visual StudioAutoCAD 2024ObjectARX 2024Visual Studio 2022 (v143 工具集)⚠️ 警告不要用 VS 2026 或更高版本编译 AutoCAD 2024 的 ARX。不要用 Debug 配置 动态 MFC 分发。不要混用 32 位与 64 位AutoCAD 2024 是 64 位。3. 下载所需文件ObjectARX SDK 2024官方下载https://aps.autodesk.com/developer/overview/autocad-objectarx-sdk-downloads直接 exe 链接https://damassets.autodesk.net/content/dam/autodesk/files/esd/objectarx/2024/objectarx-for-autocad-2024-win-64bit-dlm.sfx.exeObjectARX Wizards 2024备用下载https://raw.githubusercontent.com/ADN-DevTech/ObjectARX-Wizards/ForAutoCAD2024/ObjectARXWizardsInstaller/ObjectARXWizard2024.zip将 SDK 解压到无中文无空格的路径例如 G:\ARX_SDK\ObjectARX_2024 。4. 安装 ObjectARX SDK双击下载的 .exe 文件。选择解压路径推荐 G:\ARX_SDK\ObjectARX_2024 或 C:\ObjectARX\2024。解压后确认存在 inc、lib-x64、samples、docs 文件夹。不要移动或重命名该文件夹。5. 安装 ObjectARX Wizards关键步骤5.1 解压 Wizard 安装包得到 ObjectARXWizard2024.msi。5.2 以管理员身份运行命令提示符按 Win输入 cmd右键“以管理员身份运行”。输入 cd /d 你的msi所在目录 例如 cd /d D:\Downloads执行msiexec /package ObjectARXWizard2024.msi5.3 安装过程中的选项RDS 符号随便填如 MYDEVObjectARX SDK location浏览选择第4步解压的 SDK 根目录AutoCAD location浏览选择 AutoCAD 2024 安装目录如 G:\Program Files\Autodesk\AutoCAD 2024一路 Next 直到 Finish5.4 安装后重启电脑。5.5 验证打开 VS2022创建新项目搜索 ObjectARX应看到“ARX/DBX Project For AutoCAD 2024”模板。5.6 如果模板不出现手动修正以管理员身份用记事本打开C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\vcprojects\Autodesk\ArxAppWiz2024.vsz将其中的 ABSOLUTE_PATH [TARGETDIR]ArxAppWiz 改为ParamABSOLUTE_PATH C:\Program Files (x86)\Autodesk\ObjectARX 2024 Wizards\ArxAppWiz同理修改 ArxAppWizOMF2024.vsz末尾改成 ArxAppWiz182。保存后重启 VS。6. 配置 Visual Studio 2022 必要组件6.1 打开 Visual Studio Installer找到 VS2022点击“修改”。6.2 在“工作负荷”中勾选“使用 C 的桌面开发”。6.3 切换到“单个组件”搜索 MFC勾选“适用于最新 v143 生成工具的 C MFC (x86 和 x64)”。6.4 点击“修改”等待完成然后重启 VS2022。7. 创建第一个 ARX 项目启动 VS2022点击“创建新项目”。搜索 ObjectARX选择“ARX/DBX Project For AutoCAD 2024”。项目名称ArxHelloWorld位置G:\ARX_Projects点击“创建”。在向导中Application TypeObjectARX (AutoCAD Extension)MFC SupportNo MFC SupportCOM Options、.NET Options全部默认点击 Finish。8. 项目属性检查与修改Release x64 配置右键项目 → 属性左上角配置选 Release平台选 x64。8.1 常规配置类型动态库 (.dll)MFC 的使用在静态库中使用 MFC平台工具集Visual Studio 2022 (v143)C 语言标准ISO C17 标准 (/std:c17)8.2 高级目标文件扩展名.arx8.3 VC 目录包含目录添加 SDK 的 inc 和 inc-x64 路径库目录添加 SDK 的 lib-x64 路径8.4 C/C → 预编译头预编译头不使用预编译头 可选8.5 C/C → 代码生成运行库多线程 (/MT)8.6 C/C → 所有选项 → 较小类型检查设置为否(/RTCc-)8.7 链接器 → 常规 → 输出文件设为(OutDir)(OutDir)(TargetName).arx8.8 链接器 → 输入 → 附加依赖项添加rxapi.lib; acdb.lib; aced.lib; acge.lib; acad.lib8.9 链接器 → 高级 → 目标计算机设置为 MachineX64点击确定保存。9. 编写 Hello World 代码推荐使用宏自动注册最简单。打开 acrxEntryPoint.cpp将内容替换为以下代码cpp复制下载// acrxEntryPoint.cpp #include StdAfx.h #include resource.h class CArxHelloApp : public AcRxArxApp { public: CArxHelloApp() : AcRxArxApp() {} virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) { AcRx::AppRetCode retCode AcRxArxApp::On_kInitAppMsg(pkt); // 初始化代码可选 return retCode; } virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) { AcRx::AppRetCode retCode AcRxArxApp::On_kUnloadAppMsg(pkt); return retCode; } virtual void RegisterServerComponents() {} // 命令函数组名 ADSKMyGroup命令名 xx → 函数名 ADSKMyGroupxx static void ADSKMyGroupxx() { acutPrintf(L\nHello World from ObjectARX!); } }; IMPLEMENT_ARX_ENTRYPOINT(CArxHelloApp) // 注册命令在 CAD 中输入 xx 即可调用 ACED_ARXCOMMAND_ENTRY_AUTO(CArxHelloApp, ADSKMyGroup, xx, MyCommandLocal, ACRX_CMD_MODAL, NULL)如果项目要求 StdAfx.h 且为空可以创建一个空的 StdAfx.h 文件内容可为空。10. 编译生成 .arx 文件工具栏选择 Release 和 x64。菜单生成 → 清理解决方案。生成 → 重新生成解决方案。输出窗口应显示...\x64\Release\ArxHelloWorld.arx进入该目录确认 .arx 文件存在。11. 设置 AutoCAD 信任路径启动 AutoCAD 2024。输入 OPTIONS 回车。文件选项卡 → 受信任的位置 → 添加。添加你的输出文件夹例如 G:\ARX_Projects\ArxHelloWorld\x64\Release应用、确定。可选输入 SECURELOAD 设为 0 临时允许加载。12. 加载并运行命令在 AutoCAD 命令行输入 AP 或 APPLOAD 回车。选择你的 .arx 文件点击加载。出现安全提示时选择“始终加载”。加载成功后关闭对话框。输入命令 xx 回车。命令行显示Hello World from ObjectARX! 成功13. 常见错误大全编译时错误#error: /RTCc rejects conformant code → 项目属性中关闭较小类型检查。error MSB8041: 需要 MFC 库 → 通过 VS Installer 安装 MFC 组件。无法打开源文件 StdAfx.h → 关闭预编译头或创建空的 StdAfx.h。未定义标识符 ACRX_API_VERSION → 手动添加 acrxGetApiVersion 函数返回 1。未定义标识符 _T → 改用宽字符串 L...。ADSKMyGroupMyCommand1 不是成员 → 确保函数名 组名命令名。无法解析的外部符号 _hdllInstance → 在代码中添加 HINSTANCE _hdllInstance NULL;多重定义 → 只保留一个 cpp 文件包含入口点。加载时错误acrxGetApiVersion 未找到 → 确认导出该函数用 dumpbin /exports 检查。AcRxDynamicLinker 加载失败 → 检查信任路径、位数、MFC 静态链接。未知命令 → 确认插件加载成功检查命令名是否正确。模块与 AutoCAD 版本不兼容 → 使用匹配的 SDK。14. 完整代码清单手动注册版本更灵活不依赖宏命名规则cpp复制下载// acrxEntryPoint.cpp #include StdAfx.h #include resource.h #include aced.h #include rxregsvc.h HINSTANCE _hdllInstance NULL; extern C int acrxGetApiVersion() { return 1; } static void MyHelloCommand() { acutPrintf(L\nHello World from ObjectARX!); } class CArxHelloApp : public AcRxArxApp { public: virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) { AcRx::AppRetCode retCode AcRxArxApp::On_kInitAppMsg(pkt); acedRegCmds-addCommand(LMYGROUP, Lxx, Lxx, ACRX_CMD_MODAL, MyHelloCommand); return retCode; } virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) { acedRegCmds-removeGroup(LMYGROUP); return AcRxArxApp::On_kUnloadAppMsg(pkt); } }; IMPLEMENT_ARX_ENTRYPOINT(CArxHelloApp) // 不要同时使用 ACED_ARXCOMMAND_ENTRY_AUTO 宏15. 进阶提示调试使用 Debug x64 配置运行库选 /MDdF5 启动 AutoCAD 并打断点。学习示例SDK 解压后的 samples 文件夹有大量示例。文档docs\arxref.chm 是 API 参考手册。绘制直线在命令函数中使用 acedCommand(RTSTR, LLINE, RTSTR, L0,0, RTSTR, L100,100, RTSTR, L, 0);