如何在IronPython中使用VB6 COM'引用'?

时间:2009-08-06 06:08:03

标签: .net vba com vb6 ironpython

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

从我的阅读中,可以在VB.NET中使用VB6 COM库(或者至少,它应该可以使用。)因为它应该可以在VB.NET中运行,并且因为.NET运行在CLR,从IronPython到逻辑上,我不能从IronPython访问这个古老的DLL?

我在IronPython中尝试了import clr; clr.AddReferenceToFileAndPath(dllpath),但一直得到'IOError:文件不存在',这显然是假的。

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

谢谢!

PS:不,我无法编辑/查看COM DLL的来源,它是第三方专有的东西。 PPS:我可以通过任何方式获得GUID / COM的名字;这个dll?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

如果没有,那么你需要找出VisualStudio用来生成互操作程序集的命令行工具(有点像它在添加Web引用时使用的WSDL.EXE),使用该工具手动生成互操作如同使用任何其他.NET程序集一样,从IronPython组装和使用它。我没有检查Google / MSDN,因为我只在VisualStudio中进行C#工作,所以我现在没有任何细节,所以我自己从来没有真正需要它。