如何在VB6中引用COM.tlb文件中的对象和方法?

如何在VB6中引用COM.tlb文件中的对象和方法?,vb6,com-interop,Vb6,Com Interop,背景:我们有一个用C#编写的COM对象。我们正在与另一家使用VB6编写代码的公司合作。我们需要向他们发送VB6代码,从COM对象创建和调用对象/方法 我使用微软提供的RegAsm.exe从C#COM DLL文件创建了一个.tlb文件。然后我在VB6中添加了这个.tlb文件作为引用(项目->引用->浏览…)。也可在“可用参考”下进行检查。它未注册为COM+ 我使用本文()作为所有这些的参考 问题:问题是我在VB6项目中引用了这个COM对象,但是没有任何对象/方法/名称空间出现。我肯定错过了一些简单

背景:我们有一个用C#编写的COM对象。我们正在与另一家使用VB6编写代码的公司合作。我们需要向他们发送VB6代码,从COM对象创建和调用对象/方法

我使用微软提供的RegAsm.exe从C#COM DLL文件创建了一个.tlb文件。然后我在VB6中添加了这个.tlb文件作为引用(项目->引用->浏览…)。也可在“可用参考”下进行检查。它未注册为COM+

我使用本文()作为所有这些的参考

问题:问题是我在VB6项目中引用了这个COM对象,但是没有任何对象/方法/名称空间出现。我肯定错过了一些简单的东西,但那是什么?我需要将其注册为COM+,还是问题出在其他方面

编辑:有关项目的更多信息
好的,我现在可以访问源代码了,但显然我错了。它是C++,不是C语言。我们的C++应用程序对象测试应用程序是C语言,但是COM对象本身是C++。 <>现在,我的新问题是我如何与这个C++ DLL进行接口。我的学院提到它“不是一个真正的COM对象”,那么除了添加它作为引用之外,还有其他方法与它进行交互吗?如果没有,那么如何将其转换为COM对象


我需要访问和使用此DLL中的函数和对象。

听起来您的C#类没有合适的接口。。。在C#中,要创建适当的类型库,需要为对象创建一个接口。否则,该对象将显示在VB6中,如您所述:


有关更多详细信息,请参见此。

您是否在C#项目中的类上添加了ComVisible属性?在类的任何方法上?另一种检查方法:使用对象浏览器工具打开.tlb,查看itI第二个Rup建议中的内容。查看对象资源管理器工具下显示的任何类。如果没有,那么跟随Kate的评论,并确保COM.Looked在.tlb文件中可以看到每个。那里什么都没有,但我没有访问C代码的权限。我只有C#COM对象DLL。我将不得不发送一些电子邮件,获取代码或让开发人员添加属性。我会随着事情的进展而更新。谢谢你的帮助。增加了更多关于问题的信息。增加了关于问题的新信息。是C++还是C风格的DLL?不是一个合适的COM DLL的C++互操作将是一个严重的痛苦。不能真正帮助你给出你的东西,因为有很多方法可以与C++的DLL交互,你必须提供更多的细节和可能的C测试代码……我不得不在C语言中重写DLL,这很好。
[Guid("0C3A05D1-ADF0-4d82-84BC-B59A1AEF6235")]
public interface ISomeClass
{
    [DispId(1)]
    string Foo { get; }

    [DispId(2)]
    string Bar { get; }

    [DispId(3)]
    bool Baz { get; }

}

[Guid("59EA6033-9BF3-4123-B163-9AD1F958E179"),
 ProgId("SomeModule.SomeClass"),
 ClassInterface(ClassInterfaceType.None)]
public class SomeClass : ISomeClass
{

     public string Foo 
     {
         get 
         {
             return _foo;
         }
     }
 // More implimentation
 ...