从 VB6 ActiveX 调用 VB.NET COM 类库不起作用



首先,我正在处理一个遗留的VB6应用程序,该应用程序通过调用启动(C++通过调用CLSIDFromProgID指向类,然后通过CoCreateInstance启动(各种C++/VB6 ActiveX exe的(作业是各种类型的数据下载器(的(作业是各种类型的数据下载器(来创建"作业"。我不得不编写一个新的下载器,由于 ActiveX 是(非常(遗留的,我用 VB.NET 编写它作为 COM 类库(因为 VB6 也不能很好地处理基于流的 HTTP(与其他下载器具有相同的入口点。

好吧,我发现的第一件事是我显然不能直接调用COM库(当启动器调用CoCreateInstance时,它会触发析构函数,然后在调用后继续使用下一个语句(,所以我不得不编写一个VB6 ActiveX exe作为实例化COM(Set oMyObject = CreateObject("DownloaderLib.Loader"((的代理,然后只执行"DoEvents"循环。从作业处理程序调用不会有任何问题,在我的开发环境中,所有内容都可以协同工作并很好地执行。

但是,当我将所有部分移动到我的系统测试环境时,它就会崩溃。VB6 应用程序调用代理,但代理似乎没有加载(或至少执行(COM。我知道我正在启动代理,因为我有向事件服务器"显示"某些内容的代码;我知道它没有到达 COM,因为我在 COM 中有类似的代码,应该在其内部的各个点调度消息。

我已经注册ActiveX exe代理,并且已经注册了(使用"适当的"REGASM(COM库。我的开发环境是使用 VS2017 和 .NET Framework v4.7.03190 的 Win10;COM 构建为面向 .NET Framework 4.6.1 的类库。我的系统测试环境是Windows Server 16,安装的.NET Framework是4.7.2(版本编码461814(,我使用的REGASM在文件夹"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\"中。

我还需要做什么?我可能缺少什么?

任何帮助将不胜感激。

@TnTinMn这就是问题所在。我在"C:\Windows\Microsoft.NET\Framework\v4.0.30319\"(不是Framework64(下重新注册了REGASM,它现在可以工作了!

非常感谢。

相关内容

  • 没有找到相关文章

最新更新