ActiveX 组件无法创建对象:注册 dll 时没有命名空间的类会发生什么情况

本文关键字:命名空间 什么情况 组件 创建对象 dll 注册 ActiveX | 更新日期: 2023-09-27 18:34:08

我有一个相当复杂的dll,其中包含两个命名空间,以及一些根本不属于命名空间的类。

为了简单起见,我有一个测试dll,其中包含两个类:

namespace MyAsmNamespace{
    public MyClass{
       public int doSomething(){ return 1;}
    }
}

public MySecondClass{
    public int doSomethingElse(){ return 2;}
}

我正在尝试使用CreateObject在经典ASP页面中使用此dll中的对象。

我已经使用 >RegAsm.exe /codebase /tlb 注册了 dll

然后我使用 set obj = CreateObject("MyAsmNamespace.MyClass") 加载 dll

现在指定了命名空间的类工作

得很好,但是对于没有命名空间的类,我不知道该怎么办。 我尝试了set obj = CreateObject("MySecondClass"),但这不起作用(我收到 ActiveX 组件无法创建对象错误(

我查看了IL DASM,MySecondClass在程序集中,但没有列在命名空间下。 查看注册表编辑器,我可以看到MyAsmNamespace.MyClass已注册,但我在任何地方都找不到MySecondClass。

MySecondClass 是否必须位于命名空间中才能在经典 asp 中引用,或者是否有它成为其一部分的默认命名空间?

ActiveX 组件无法创建对象:注册 dll 时没有命名空间的类会发生什么情况

经过几天的工作,如果该类未放置在命名空间内,我还没有找到使用 CreateObject 引用程序集内类的方法。