繁体   English   中英

如何在IronPython中使用VB6 COM“引用”?

[英]How can I use a VB6 COM 'reference' in IronPython?

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

根据我的阅读,可以在VB.NET中使用VB6 COM库(或者至少应该可以使用)。由于在VB.NET中应该存在,并且由于.NET在CLR上运行,从逻辑上讲,由于IronPython确实可以从IronPython访问此古老的DLL?

我尝试了import clr; clr.AddReferenceToFileAndPath(dllpath) 在IronPython中为import clr; clr.AddReferenceToFileAndPath(dllpath) ,但import clr; clr.AddReferenceToFileAndPath(dllpath)获取“ IOError:文件不存在”,这显然是错误的。

如果有人可以指出我要使用/ any / .NET语言的VB6 COM对象,将不胜感激。

谢谢!

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

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

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

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

如果不是,那么您需要找出VisualStudio使用哪个命令行工具来生成互操作程序集(有点像WSDL.EXE ,当您添加Web引用时它会使用它),使用该工具手动生成互操作程序集并从中使用它。 IronPython就像处理其他任何.NET程序集一样。 如果不检查Google / MSDN,我现在没有适合您的任何细节,因为我只在VisualStudio中进行C#工作,所以我自己实际上还不需要此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM