如何在Delphi7中访问C# .net托管DLL?
我正在尝试访问一些编译为C#的DLL,它们不是那种旧式的DLL(我没有这些DLL的源代码)。
我已经尝试在网上搜索了,但是结果很混乱。我猜想即使使用D7访问它也存在某些限制。
谢谢。
@AngryHacker,如果你所建议的是正确的,那么.NET程序集需要使用ComVisibleAttribute进行标记(启用"注册COM互操作"选项),并使用[ComVisible(true)]将每个函数公开给COM。
如果您要使用第三方程序集(您未编写),则必须与供应商确认该程序集是否可以通过COM使用。
此外,程序集不需要强名称即可通过COM访问。
如果您不想使用COM,请查看Delphi的CrossTalk: http://www.atozed.com/CrossTalk/Docs/index.EN.aspx
Delphi7可以像其他基于COM的语言(如VB6)一样访问托管DLL。
基本步骤如下:
现在,Delphi7应该能够像任何其他基于COM的DLL一样引用由regasm
生成的TLB文件。
这并不难。 如果您不想要,您不必“regasm”它。您甚至不必注册任何COM相关的东西。
最好使用C#或其他托管语言创建包装器。 哦,确保您的类是ComVisible(true)的。 这个Stack Overflow线程很好地总结了它,并提供了不同场景的示例。 在Delphi中托管CLR与/无JCL - 示例
如果您没有更改原始DLL源代码的能力,您可以在C#或Prism中编写代理,公开一个COM接口,您可以在项目中使用它。这种方法的优点是您可以定制每个调用,仅使用您可以轻松处理的特定类型。