【问题标题】:How can I use a VB6 COM 'reference' in IronPython?如何在 IronPython 中使用 VB6 COM“参考”?
【发布时间】:2010-11-17 06:08:48
【问题描述】:

我目前正在开发一个或多或少需要从 VB 6 COM dll 获取一些数据的脚本。此 dll 当前用于 MS Word VBA 项目,并将类等导出到 VBA 代码。它是在VBA编辑器的Tools -> References菜单中添加的,我可以在VBA的对象浏览器中看到它的类。

根据我的阅读,可以在 VB.NET 中使用 VB6 COM 库(或者至少应该可以。)因为它在 VB.NET 中应该是可能的,并且由于 .NET 在CLR,并且由于 IronPython 确实如此,从逻辑上讲,我不能从 IronPython 访问这个古老的 DLL 吗?

我在 IronPython 中尝试过import clr; clr.AddReferenceToFileAndPath(dllpath),但不断收到“IOError: file does not exist”,这显然是错误的。

如果有人能指出我在 /any/ .NET 语言中使用 VB6 COM 对象,我将不胜感激。

谢谢!

PS:不,我不能编辑/查看 COM DLL 的源代码,它是第 3 方专有的东西。 PPS:我可以通过任何方式获得 GUID/COM 的名称;的dll?

【问题讨论】:

    标签: .net vba com vb6 ironpython


    【解决方案1】:

    您需要使用tlbimp 工具生成运行时COM Wrapper 程序集,并添加对其的引用;支持 .net 属性的语言可以显式地进行互操作,但即便如此,自动生成包装器也要简单得多。

    检查ildasm 中的包装程序集将准确显示转换是如何执行的。

    【讨论】:

    • 谢谢!结果很好。我在 IronPython 中添加了对互操作程序集的引用,以及 Just Works 中的所有内容!这通常不会发生:)
    【解决方案2】:

    在任何 .NET 语言中(在 Visual Studio 中,不确定 IronPython 是否具有完整的语言支持,或者它是否仅在带有 .NET Framework 的 CLR 上运行?)您只需转到“添加引用”对话框,选择“COM”选项卡,选择库(很像在 VB6/VBA 引用对话框中),基本上就完成了。 VisualStudio 然后为您生成一个 .NET 互操作程序集,它是 COM 库的中间人,您可以像使用 .NET 程序集一样使用它。如果 VisualStudio 支持 IronPython,那么您应该这样做。

    如果没有,那么您需要找出 VisualStudio 使用哪个命令行工具来生成互操作程序集(有点像添加 Web 引用时使用的 WSDL.EXE),使用该工具手动生成互操作程序集并从 IronPython 中使用它,就像使用任何其他 .NET 程序集一样。如果没有查看 Google/MSDN,我现在没有任何具体信息供您参考,因为我只在 VisualStudio 中进行 C# 工作,所以我自己从来没有真正需要过这个。

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2011-09-24
      • 2020-06-17
      相关资源
      最近更新 更多