C# ActiveX组件可以';不创建对象。网络公司

C# ActiveX组件可以';不创建对象。网络公司,c#,.net,com,vb6,interop,C#,.net,Com,Vb6,Interop,我目前正在尝试引用Visual Basic 6应用程序中的.NET COM库。我已经使用Regasm注册了它,并且在我的类中将ComVisible设置为true。但是,当我尝试运行我的应用程序时,出现以下错误: ActiveX组件无法创建对象 我的库由一个非常简单的函数组成(因为我只是想测试我是否可以运行它),它只返回字符串“helloworld” 我必须使用另一台机器(机器1)来创建我的C#.Net类,然后将该类复制到另一台机器(机器2)上,然后从那里注册dll并在我的项目中引用它。然后我在一

我目前正在尝试引用Visual Basic 6应用程序中的.NET COM库。我已经使用Regasm注册了它,并且在我的类中将ComVisible设置为true。但是,当我尝试运行我的应用程序时,出现以下错误:

ActiveX组件无法创建对象

我的库由一个非常简单的函数组成(因为我只是想测试我是否可以运行它),它只返回字符串“helloworld”

我必须使用另一台机器(机器1)来创建我的C#.Net类,然后将该类复制到另一台机器(机器2)上,然后从那里注册dll并在我的项目中引用它。然后我在一台单独的机器(机器3)上测试了我的项目,这就是我收到错误的原因

我真的需要这方面的帮助,我已经尝试取消注册和重新注册,但仍然没有效果

试试这个

从提升的命令提示符:

  • RegAsm/codebase/tlb AssemblyName.dll
    。注意生成的.tlb文件
  • RegTlib文件.tlb
  • 打开VB6项目并引用.tlb文件

  • 是的,你做错了什么。我们看不出你做错了。@HansPassant我在机器1上创建了一个C#库,然后将它复制到机器2上,在机器2上我注册了dll,它创建了一个.tlb文件。然后,我在vb6应用程序中引用了该.tlb文件。但是,当我在机器3(目标机器)上测试我的项目时,我得到了一个如上所述的错误。@HansPassant,.tlb文件是否必须在C:\Windows\system32文件夹中?除了命令提示它已成功注册外,是否有其他方法可以查看dll是否已实际注册。我的代码现在的问题是,它在错误的文件中查找dll/.tlb。命令提示符是确定它是否已注册的最佳方法。要查看它使用的是哪个.dll,请打开
    regedit
    并搜索COM组件(ComponentName.Classname)的ProgID。这会给你一个CLSID。然后在该CLSID中搜索InProcServer32子项-这将告诉您在尝试加载.DLL并返回COM接口指针时它将访问哪个文件。如果需要,您可以删除这些键并重新注册组件。对于COM组件(ComponentName.ClassName),按ComponentName是指命名空间吗?值得注意的是,现在windows 2012上不存在RegTlib!