访问另一个 DLL 中的 类?

Accessing classes that are in another DLL?

有没有办法从另一个 dll 中导出和使用 类, 我有 2 个 dll,我正在尝试访问两者之间的 类,想知道这是否可能。

有多种方法可以实现,包括但不限于以下几种:

  1. 使用运行时包而不是 DLL。然后你可以使用来自另一个模块的任何类型、变量等。请注意,这会强制您在所有模块中使用运行时包,并使用相同版本的 Delphi.
  2. 编译所有模块
  3. 继续使用 DLL,但通过接口而不是 Delphi 类 访问类型。与 类 不同,接口可以跨 DLL 边界导出。
  4. 继续使用 DLL,但使用单元作用域过程和函数而不是 类 访问类型。这将引导您进入与 Win32 界面性质相同的界面。

在以上选项中,它们按方便性递减的顺序排列。最方便的是使用运行时包,但这可能会给您带来不希望的限制,即所有模块都使用相同的 Delphi 版本编译。接口通常比 Win32 风格的接口使用起来更方便,但在建立这样的体系结构时可能会有更多的编程开销。您必须做出最适合您需求的选择。

如果您能从一开始就避免使用单独的模块,并将所有内容构建到一个可执行文件中,那么这无疑是最方便的方法。