gpt4 book ai didi

vb6 - 用于 VB6 应用程序中的类库的 RegAsm

转载 作者:行者123 更新时间:2023-12-04 20:19:37 25 4
gpt4 key购买 nike

简而言之,我构建了一个 C# 类库,它既是 COM 可见的,又是为 COM 互操作而注册的。我已经编译了库,从而生成了 .dll 和 .tlb 文件。

我有另一台运行 VB6 应用程序的机器。因此,我将 .dll 和 .tlb 文件复制到机器上的 C:/Windows/system32 文件夹中。然后我使用以下方法注册了这些文件:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm C:\Windows\system32\TestClass.dll /tlb:TestClass.tlb

成功注册文件后,我从我的 VB6 应用程序中添加了对 Test.tlb 文件的项目引用,然后我尝试在我的新引用类中调用一个方法,如下所示:
Dim myObject As TestNamespace.TestClass
Set myObject = New TestNamespace.TestClass
MsgBox (myObject.TestMethod())

它不起作用,我收到 -2147024894 自动化错误。

我读过我不应该将 dll 安装到像 system32 这样的私有(private)文件夹中。我应该在 GAC 中注册,或者我应该使用“/codebase”选项在另一个位置注册:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm C:\TestClass.dll /tlb:TestClass.tlb /codebase

有什么理由我不应该使用 system32?过去从事此项目的开发人员已将此 VB6 项目使用的程序集文件放入 system32 中,似乎没有任何问题。

当我在 system32 位置注册我的 dll 时,我得到了自动化错误。当我在另一个位置(即 C:/)注册我的 dll 时,从 VB6 到我的类库的方法调用按预期工作。是什么赋予了?

我应该提一下,我们不会使用 GAC 来注册任何 DLL。就是那样子。

任何帮助表示赞赏。

麦克风

最佳答案

我在 system32 中对 dll 使用 regasm 没有任何问题。我总是使用/Codebase 开关,它将 tlb 的位置放在注册表中,这样 VB6 就不会混淆。

MSDN page了解更多信息。

关于vb6 - 用于 VB6 应用程序中的类库的 RegAsm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914738/

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