CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2025 开发者帮助

生成和注册 COM DLL

2024-5-18 19:25| 发布者: admin| 查看: 411| 评论: 0|原作者: admin|来自: AutoCAD

生成和注册 COM DLL

描述应用程序、类型库和自动化对象的注册表文件必须合并到 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. 为应用程序创建一个 REG 文件,其中包含与 IDL 文件中的对象和类型库匹配的 GUID。

    以下示例是 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\R25.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

父主题:

  1. 公开自动化功能

路过

雷人

握手

鲜花

鸡蛋

最新评论

群   号:715888130

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

GMT+8, 2025-12-16 04:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部