CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

生成和注册 COM DLL

2022-12-31 12:23| 发布者: admin| 查看: 236| 评论: 0|来自: AutoCAD

描述应用程序、类型库和自动化对象的注册表文件必须合并到 Windows 系统注册表中,才能使 DLL 中的组件可访问。链接 COM DLL 和单独的 ObjectARX 应用程序需要执行其他步骤。以下各节介绍了这些步骤:

准备独立于 ObjectARX 应用程序的 COM DLL

  1. 生成 COM DLL。
  2. 如果表示 ObjectARX 类的任何修饰名称在链接器错误中显示为未解析的外部符号,请将这些名称添加到 ObjectARX DEF 文件的“导出”部分。
  3. 如果在步骤 2 中更改了 ObjectARX DEF 文件,请重新生成 ObjectARX 应用程序。
  4. 编辑 COM DLL 项目的属性。
  5. 在链接器输入依赖项设置中,将 ObjectARX 应用程序的库名称添加到对象/库模块列表的rxapi.lib 之后。以下示例来自示例项目:AsdkSquareWrapper
..\..\..\..\lib\rxapi.lib ..\square\ReleaseEnt\square.lib 
etc.

保存项目属性设置并关闭对话框。

生成并注册 COM DLL,如下一过程所述。

生成和注册组件服务器

  1. 生成 COM 应用程序。

    可能会出现一条消息,指示 REGSRVR32 无法加载 AutoCAD。若要在将来消除此消息,请从 COM 项目设置中删除用于注册 COM 服务器的所有自定义生成步骤。

  2. 使用对象的 GUID 和与 IDL 文件中的类型库匹配的对象创建 REG 文件。

    以下示例是以下对象的 REG 文件:AsdkSquareWrapper

REGEDIT
; This .REG file may be used by your SETUP program.
; If a SETUP program is not available, the entries below will be
; registered in your InitInstance automatically with a call to
; CWinApp::RegisterShellFileTypes and 
; COleObjectFactory::UpdateRegistryAll.
HKEY_CLASSES_ROOT\TypeLib\{800F70A1-6DE9-11D2-A7A6-0060B0872457}
HKEY_CLASSES_ROOT\TypeLib\{800F70A1-6DE9-11D2-A7A6-0060B0872457}
    \1.1 = AsdkSquareLib 1.0 Type Library
HKEY_CLASSES_ROOT\TypeLib\{800F70A1-6DE9-11D2-A7A6-0060B0872457}
    \1.1\0\win32=
    E:\TEMP\square\AsdkSquareLib\Debug\AsdkSquareLib.dll
HKEY_CLASSES_ROOT\TypeLib\{800F70A1-6DE9-11D2-A7A6-0060B0872457}
    \1.1\9\win32 =
    E:\TEMP\square\AsdkSquareLib\Debug\AsdkSquareLib.dll
HKEY_CLASSES_ROOT\CLSID\{800F70AE-6DE9-11D2-A7A6-0060B0872457} =
    AsdkSquareWrapper Class
HKEY_CLASSES_ROOT\CLSID\{800F70AE-6DE9-11D2-A7A6-0060B0872457}
    \InProcServer32 =
    E:\TEMP\square\AsdkSquareLib\Debug\AsdkSquareLib.dll
HKEY_CLASSES_ROOT\Interface\{800F70AD-6DE9-11D2-A7A6-0060B0872457}
    = IAsdkSquareWrapper Interface
HKEY_CLASSES_ROOT\Interface\{800F70AD-6DE9-11D2-A7A6-0060B0872457}
    \TypeLib = {E3D2C633-69C9-11D2-A7A2-0060B0872457}
HKEY_CLASSES_ROOT\Interface\{800F70AD-6DE9-11D2-A7A6-0060B0872457}
    \ProxyStubClsid32 = {00020424-0000-0000-C000-000000000046}
HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\ObjectDBX\R24.0\ActiveXCLSID
    \AsdkPoly = {800F70AE-6DE9-11D2-A7A6-0060B0872457}

有关 REG 文件的详细信息,请参阅创建注册表文件

从资源管理器运行 REG 文件。

注意:依赖于外部 ObjectDBX 或 ObjectARX 服务器 DLL 的应用程序必须确保服务器在 AutoCAD 中正确加载。支持进程外环境(如 Visual Basic)的单独 COM DLL 通常将此责任委托给其客户端应用程序。但是,仅支持进程内 AutoCAD 客户端的组合 COM DLL 可以在函数中使用 ObjectARX API,以保证加载必要的服务器。ObjectARX 向导的 COM 服务器选项提供此功能。DllMain

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 15:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部