我目前正在开发的是或多或少地需要从VB 6 COM DLL得到一些数据的脚本。 此DLL是目前在微软Word VBA项目中使用,并出口类等,以VBA代码。 它在工具添加 - >引用菜单中的VBA编辑器,我可以看到它在VBA对象浏览器类。
从我的阅读,也可以使用VB.NET VB6的COM库(或至少,它应该是可以的。),因为它应该在VB.NET是可能的,而且由于.NET运行在CLR,并且由于IronPython的不来,从逻辑上讲,我不能访问从IronPython的这个古老的DLL?
我曾尝试import clr; clr.AddReferenceToFileAndPath(dllpath)
import clr; clr.AddReferenceToFileAndPath(dllpath)
中IronPython的,但不断收到“IO错误:文件不存在”,这显然是错误的。
如果任何人都可以点我在/任何/ .NET语言使用VB6 COM对象,这将不胜感激。
谢谢!
PS:不,我不能编辑/视图的COM DLL的来源,这是第三方的专有的东西。 PPS:无论如何,我可以得到GUID / COM“的名字; 的dll?
您需要装配生成运行COM包装使用tlbimp
工具,并添加到一个参考; 支持语言.NET属性可以明确地做互操作,但即使在那里,autogenerating包装就简单得多了。
在检查包装程序集ildasm
将显示究竟是如何转换已经完成。
在任何.NET语言(在Visual Studio,不知道是否有IronPython的完整的语言支持那里,或者如果它仅在具有.NET框架?CLR的运行),你干脆去Add Reference对话框,选择COM选项卡,选择库(就像在VB6 / VBA引用对话框),你就基本上完成了。 VisualStudio的那么为您生成一个.NET互操作程序集是中间人的COM库,你可以使用它,就好像它是一个.NET程序集。 如果IronPython的在VisualStudio的支持,这可能是你应该做的。
如果没有,那么你需要找出哪些命令行工具VisualStudio中用来生成interop程序集(有点像WSDL.EXE
当您添加Web引用它使用),使用该工具来手动生成interop装配和使用,从IronPython的,你会做任何其他.NET程序集。 我没有任何具体的你现在不检查谷歌/ MSDN,我只是做内部的VisualStudio C#的工作,所以我从来没有真正需要这个自己呢。