2011-03-11 54 views
6

我有一个C#.Net 4.0应用程序和另一个VB6应用程序。我通过使Project COM Visible和Actived寄存器COM Interop创建了一个COM接口。COM类的可见性:C#到VB6

I通过执行C#应用程序测试COM接口,以导入新的tlb文件。一切似乎都很好。

下一步我试图用vb6来使用dll。该DLL可以加载,但现在我看不到所有的公共课程。在C#中,我看到vb6中有4个类,我只能看到3.

我看不到的类是一个“特殊的”类,它导致了一个接口和服务事件。

类标有

[ComSourceInterfaces(typeof(COMEvents))] 

和COMEvents界面中,就像

[Guid("11947063-4665-4DE1-931D-9915CCD01794")] 
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
    public interface COMEvents 
    { 
     void MethodOne(); 
     void MethodTwo(); 
    } 

我不得不说,所有工作得很好。比我添加了一个项目,它只影响其他程序集,而这些程序集是由COM接口项目在运行时加载的。他们实现了一个改变了的界面。这是我对com界面做出的唯一改变是为方法添加了附加参数。

为什么我不能再看到课堂?为什么只有我改变了班级,却没有“冒险”的方式?

需要帮助谢谢!

PS: 我尝试到现在: - >所有项目都建立86 - 在x86机器>项目建设 - >的Dependency Walker(GPSVC.DLL和IESHIMS.DLL失踪,但他们以前那样和也我不认为他们有anny效果导致tlb生成并可以加载) - > tryied tlbexp.exe但得到一个依赖性错误导致assambly运行时比目前新。 wtf?)

回答

4

发现它...有2个参数的构造函数和VB6不支持具有更多零参数的构造函数。

+1

让你想知道......“得到一个依赖性错误导致assambly运行时比当前更新。”....一个完全不相关的错误,但你仍然坚持下去。我向你致敬,你勇敢的人。 – 2011-11-30 12:43:59