繁体   English   中英

使用Delphi 7访问托管代码(CLR)DLL

[英]access managed code ( CLR ) DLL with Delphi 7

delphi7如何访问C#.net管理的dll?

我正在尝试访问一些用c#编译的DLL,它们不是那些旧式DLL。 (我没有这些DLL的来源)

我确实试图在网上搜索,但他们很困惑。 我猜即使用D7访问它也有一些限制。

谢谢。

@AngryHacker,对于你的建议是真的,.NET程序集需要用ComVisibleAttribute(启用COM Interop选项注册)标记,并使用[ComVisible(true)]将每个函数公开给COM。

如果您尝试使用第三方程序集(您没有编写),则必须与供应商核实是否可以通过COM使用该程序集。

此外,程序集不需要强名称可通过COM访问。

如果您不想使用COM方式,请查看CrossTalk for Delphi: http//www.atozed.com/CrossTalk/Docs/index.EN.aspx

Delphi7以与任何其他基于COM的语言(例如VB6)相同的方式访问托管DLL。

基本演练是这样的:

  1. 确保您的.NET具有强名称。
  2. 通过regasm运行它
  3. 将其放入GAC

现在Delphi7应该能够引用由regasm生成的TLB文件,就像任何其他基于COM的DLL一样。

很久以前你可以尝试使用Brian Long所描述的“反向P /调用”技巧

这个技巧不需要ComVisible(所以你应该能够在不改变.NET程序集的来源的情况下使用它)。

--jeroen

这根本不难。 如果你不想,你不必“诅咒”它。 你根本不必注册任何COM-ish。

通过使用C#或其他托管语言创建包装器,您将获得最佳服务。 哦,确保你的课程是可见的(真实的)。 这个Stack Overflow线程很好地总结了它,并且它通过一组用于不同场景的示例来实现。 使用/不使用JCL在Delphi中托管CLR - 示例

如果您无法更改原始DLL的源代码,则可以使用C#或Prism编写代理,以公开可在项目中使用的com接口。 这种方法的优点是您可以定制每个调用,只使用您可以轻松处理的特定类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM