我有需要在VB6使用C#组件。我曾在以前的机器/操作系统上工作过,但在我当前的Windows 10机器上,在VB6/VS6 IDE中调试时无法使其工作。每当我打了一行:在VB6应用,为的CreateObject一个C#DLL失败,并在IDE“ActiveX组件不能创建对象”仅
Set interop = CreateObject("BTR.Core.Interop.Activator")
我收到“ActiveX组件不能创建对象。”错误。
如果我运行编译的VB6应用程序,一切正常。所以它必须是关于VB6/VS6 IDE的权限问题。
我发现其他职位提到,以确保使用32位版本的regasm,我已经试过regasm
和C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
无济于事。因为它在我运行编译后的VB6应用程序(以及应用程序和VB6应用程序都在以前的机器上工作)时起作用,所以我认为证明将我的C#dll公开给COM的所有设置都是正确的,如果有人认为它是中肯的,我很乐意详细地挖掘它。
只有可疑的事情是,这个帖子(Late binding run-time error in VB6 when creating an object from a .NET assembly)谈论应该是什么在注册表中运行regasm后。我的所有设置都是在
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID\{2942ED53-BBC4-311D-9840-1FE610885592}
的WOW6432NODE关键。
所以不知道是否有某种32/64位冲突或什么的。任何建议表示赞赏。
您确定VBP文件中的COM引用与编译应用程序时的引用完全相同吗?如果VBP中的引用与.NET代码/程序集中指定的接口不匹配,则可能导致此错误。 – DaveInCaz
我有/没有参考,我正在做晚绑定的CreateObject。这就是为什么我对试图添加tlb参考开始怀疑。奇怪的。 – Terry