4

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

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

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

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

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

这是德尔福的问题吗?你们有没有人在导入时遇到过这样的问题,请给我一些想法?

4

2 回答 2

0

除了使用 COM 互操作之外,您还可以进行非托管导出。简而言之,您需要一个新的特定版本的 .net dll。

请前往这篇文章了解使用 Delphi 的技术的详细信息。

于 2012-01-03T10:17:04.303 回答
0

我建议您在 C# 或 VB.NET 中为 DLL 制作 COM 可见的包装器,这将以 Delphi 可以正确交互的方式导入必要的功能。

于 2011-07-27T17:50:34.060 回答