gpt4 book ai didi

c# - VB6:调用 CreateObject 时出现运行时错误 424

转载 作者:行者123 更新时间:2023-11-30 12:49:59 25 4
gpt4 key购买 nike

我创建了一个我想在 VB6 中使用的 C# COM 可访问 dll我能够在 VB6 中通过对 TLB 的硬引用来使用我的 COM 对象。我现在要做的是删除这个引用并动态加载它我按如下方式创建它:

Dim keylok As Object
Set keylok = CreateObject("MyClassLib.MyObject")

当我点击第二行时,我收到运行时错误 424“需要对象”。但是当我按如下方式创建它时:

Dim keylok As MyObject
Set keylok = CreateObject("MyClassLib.MyObject")

它工作正常。我不确定为什么会有所作为。无论如何,我不能使用第二个,因为我仍然需要物理引用。

我还尝试将其作为一种调试写入我的 COM 对象构造函数中的文件,以确定它是否真的被调用。是的,我什至能够在构造函数中成功调用 COM 对象中的其他方法。

我什至能够使用以下方法从另一个 C# 应用动态加载和使用它:

dynamic myObj = Activator.CreateInstance(Type.GetTypeFromProgID("MyClassLib.MyObject"));

有没有人遇到过类似的事情?

最佳答案

我在@rskar 输入的帮助下找到了解决方案。所以,我想我要回答我的问题,以防有人遇到同样的问题。

我的对象没有实现 IDsipatch。所以我必须做的就是用 InterfaceType(ComInterfaceType.InterfaceIsDual) 装饰我的 C# COM 接口(interface)所以它实现了 IUnknown 和 IDispatch。原来是用 InterfaceType(ComInterfaceType.InterfaceIsIUnknown)

装饰的

关于c# - VB6:调用 CreateObject 时出现运行时错误 424,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10213416/

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