gpt4 book ai didi

c# - COM 类可见性 : C# to VB6

转载 作者:太空狗 更新时间:2023-10-29 20:28:57 28 4
gpt4 key购买 nike

我一方面有一个 C# .Net 4.0 应用程序,另一方面有一个 VB6 应用程序。我通过使项目 COM 可见并激活注册 COM Interop 创建了一个 COM 接口(interface)。

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

作为下一步,我尝试将 dll 与 vb6 一起使用。可以加载 dll,但现在我看不到所有公共(public)类。在 C# 中我看到 4 个类,在 vb6 中我只能看到 3 个。

我看不到的类是一个“特殊”类,因为它实现了一个接口(interface)并为事件提供服务。

类(class)标有

[ComSourceInterfaces(typeof(COMEvents))]

COMEvents 界面就像

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

我不得不说一切都很好。比我添加的项目只影响 COM 接口(interface)项目在运行时加载的其他程序集。他们实现了一个改变的接口(interface)。那是我对 com 接口(interface)所做的唯一更改是向方法添加附加参数。

为什么我再也看不到类(class)了?为什么我只更改了类,但没有“冒险”的方式?

需要帮助谢谢!

附言:我试过到现在:-> 所有项目都是 Build x86-> 在 x86 机器上构建项目-> Dependency Walker(缺少 GPSVC.DLL 和 IESHIMS.DLL,但它们之前也有,我不认为它们有任何影响,因为 tlb 正在构建并且可以加载)-> 尝试了 tlbexp.exe 但出现依赖错误,因为 assambly 运行时比当前运行时更新。卧槽?)

最佳答案

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

关于c# - COM 类可见性 : C# to VB6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271256/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com