[英]0x800a01ad - Microsoft VBScript runtime error: ActiveX component can't create object
我已经使用下一个代码和设置创建了类库项目:
using System.Runtime.InteropServices;
namespace MyDll
{
[ComVisible(true)]
public class TestClass
{
[ComVisible(true)]
public string[] SomeFunc(string path)
{
return new[] {"1","7","9"};
}
}
}
还检查了
属性/应用程序/程序集信息中的“使程序集 COM 可见”
和
属性/构建中的“注册 COM 互操作”
在我的 VBscript 中,我遇到了异常
“0x800a01ad - Microsoft VBScript 运行时错误:ActiveX 组件无法创建对象:'MyDll.TestClass'”
尝试从 dll 创建对象时:
Dim result
Dim myObj
Set myObj = CreateObject("MyDll.TestClass")
Set result= myObj.SomeFunc("a")
您可能正在使用regasm.exe
将类添加到注册表中,但在注册表中的哪个位置?
问题是我们处理 32 位和 64 位架构都很复杂,所以想到了几件事。
你是如何运行脚本的
Dim result
Dim myObj
Set myObj = CreateObject("MyDll.TestClass")
Set result= myObj.SomeFunc("a")
如果您使用默认的wscript.exe
Windows Scripting Host 来运行脚本,那么它将默认为操作系统架构,在大多数现代安装中为 64 位操作系统。
如果regasm.exe
没有使用 64 位注册表注册类,那么CreateObject
将永远找不到 prog id MyDll.TestClass
。
检查这篇文章,看看您是否可以在注册表中看到类,它详细说明了要检查 32 位和 64 位的各个位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.