将.net dll导入Delphi 6会丢失信息

时间:2011-03-20 20:50:30

标签: delphi import delphi-6 typelib

我有一个.net dll,我可以导入到Delphi 6.但是它丢失了一些信息。

我在VB.net中有一个演示应用程序来使用这个dll,它显示了2个被调用的接口 IRedeemTransactionItemBundleITransactionItemBundle。在Visual Studio 2008中,我可以看到ITransactionItemBundleIRedeemTransactionItemBundle的基本类型。因此,当我声明类型IRedeemTransactionItemBundle的变量时,我可以访问两个接口的所有属性。

但是当我将dll导入Delphi 6时,我可以看到IRedeemTransactionItemBundleITransactionItemBundle声明部分。但是没有信息显示ITransactionItemBundleIRedeemTransactionItemBundle的基本类型。此外,当我在Delphi中声明类型IRedeemTransactionItemBundle的变量时,我无法访问ITransactionItemBundle的属性(基类型)。

当我尝试通过将IRedeemTransactionItemBundle的基本类型设置为ITransactionItemBundle来在tlb编辑器中注册库时,我收到错误:“父接口已经有一个ID为1610743808的成员”。我可以看到两个接口的属性在tlb编辑器中具有相同的ID。

我也尝试使用Delphi 7导入相同的dll。但没有帮助。

这是Delphi的问题吗?你有没有经历过这样的导入问题请给我一些想法?

2 个答案:

答案 0 :(得分:0)

我建议你在C#或VB.NET中为COM提供COM可见包装,它将以Delphi正确交互的方式导入必要的功能。

答案 1 :(得分:0)

除了使用COM互操作之外,您还可以执行unmanaged export。简而言之,您需要一个新的特定版本的.net DLL。

请前往此post了解使用Delphi的技术细节。