【问题标题】:Embed com obj in delphi's exe在delphi的exe中嵌入com obj
【发布时间】:2018-12-25 09:17:54
【问题描述】:

我在 c# 中创建了一个 dll 并使其可见,然后在 delphi 中使用它。为了做到这一点,我必须注册 dll 以便我可以将它作为一个组件安装在我的 delphi ide 中。 (我用互操作的东西注册了 dll,然后在 delphi 中安装组件 > 类型库 > 选择了我的 com dll,它创建了所有使用它的东西。)

我现在面临的问题是我想在另一台机器上使用 exe 而无需注册 dll。是否可以用注册的 com dll 编译 exe 文件?

我有一个解决方案是不使用 com obj 而是使用非托管 dll 并导出我想要的所有方法,但我更喜欢将 dll/com 嵌入到我的 exe 中,我似乎找不到解决办法,不知道有没有可能。

【问题讨论】:

  • Iirc,您可以使用 TRegSvr.Exe (TRegSvr.Dpr) 源代码中的代码从您自己的应用程序中注册 .Dll。
  • 不要这样。发送可执行文件和 DLL,并使用免注册 COM。
  • @DavidHeffernan 我在用户端使用的环境非常有限。
  • 如果你使用COM,你需要告诉可执行文件如何找到COM服务器。这意味着要么注册 COM 服务器,要么使用免注册 COM。如果您不想注册 COM 服务器,请使用免注册 COM。不会有灵丹妙药的解决方案。你将需要学习一大堆新东西。需要花时间。不要指望在几个小时内解决这个问题。
  • @DavidHeffernan 我找到了这个stackoverflow.com/questions/5074563/registration-free-com-dll 只要你知道,知道他在答案中使用的.X 文件而不是.dll 是什么吗?

标签: delphi dll com delphi-10.1-berlin


【解决方案1】:

使用CLR技术的动态加载来加载和使用DLL。参考这个Hosting the .NET runtime in a Delphi Program你可能会得到你的答案。

在动态加载技术中,您无需注册 DLL,您只需为您的 DLL 生成一个 TLB 和接口,并通过它使用 DLL。

【讨论】:

  • 生成的 tlb 是如何调用 dll 方法的?... 注册表提供了 dll 的路径,没有它在后端就是这样,只有 tlb 你不能做太多.而且我不知道如何使用您通过此链接发送给我的代码。
猜你喜欢
  • 1970-01-01
  • 2016-06-20
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2011-02-28
  • 1970-01-01
  • 2013-02-12
相关资源
最近更新 更多