我有一个.net dll,我可以导入到Delphi 6.但是它丢失了一些信息。
我在VB.net中有一个演示应用程序来使用这个dll,它显示了2个被调用的接口
IRedeemTransactionItemBundle
和ITransactionItemBundle
。在Visual Studio 2008中,我可以看到ITransactionItemBundle
是IRedeemTransactionItemBundle
的基本类型。因此,当我声明类型IRedeemTransactionItemBundle
的变量时,我可以访问两个接口的所有属性。
但是当我将dll导入Delphi 6时,我可以看到IRedeemTransactionItemBundle
和ITransactionItemBundle
声明部分。但是没有信息显示ITransactionItemBundle
是IRedeemTransactionItemBundle
的基本类型。此外,当我在Delphi中声明类型IRedeemTransactionItemBundle
的变量时,我无法访问ITransactionItemBundle
的属性(基类型)。
当我尝试通过将IRedeemTransactionItemBundle
的基本类型设置为ITransactionItemBundle
来在tlb编辑器中注册库时,我收到错误:“父接口已经有一个ID为1610743808的成员”。我可以看到两个接口的属性在tlb编辑器中具有相同的ID。
我也尝试使用Delphi 7导入相同的dll。但没有帮助。
这是Delphi的问题吗?你有没有经历过这样的导入问题请给我一些想法?
答案 0 :(得分:0)
我建议你在C#或VB.NET中为COM提供COM可见包装,它将以Delphi正确交互的方式导入必要的功能。
答案 1 :(得分:0)
除了使用COM互操作之外,您还可以执行unmanaged export。简而言之,您需要一个新的特定版本的.net DLL。
请前往此post了解使用Delphi的技术细节。