7

我一方面有一个 C# .Net 4.0 应用程序,另一方面有一个 VB6 应用程序。我通过使 Project COM Visible 和 actived register COM Interop 创建了一个 COM 接口。

我通过实现一个导入新 tlb 文件的 C# 应用程序来测试 COM 接口。一切似乎都很好。

作为下一步,我尝试将 dll 与 vb6 一起使用。可以加载 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:到目前为止,我尝试过:->所有项目都是构建 x86-> 在 x86 机器上构建项目-> Dependency Walker(缺少 GPSVC.DLL 和 IESHIMS.DLL,但他们以前也这样做过,我认为他们没有 anny效果导致 tlb 已构建并且可以加载)-> 尝试了 tlbexp.exe 但得到一个依赖错误,导致 assambly 运行时比当前运行时更新。wtf?)

4

1 回答 1

5

找到它...有带有 2 个参数的构造函数,而 VB6 不支持带有多于零参数的构造函数。

于 2011-03-11T13:39:21.590 回答