获取“Activex组件无法创建对象”
问题描述:
我想从VB脚本代码调用C#函数,我得到“Activex组件不能创建对象”错误。获取“Activex组件无法创建对象”
我做了以下工作。
- 类创建库的ProgID,并标记有ComVisible特性真强命名
- 注册使用RegAsm.exe /代码库DllPath的(DLL注册成功,我能看到,在登记处)
- 创建对象的DLL使用VB脚本代码并调用C#函数如下。
Option Explicit
Dim testwfhandler
Set testwfhandler= CreateObject("CoreComponentWorkflow.WorkflowHandler")
If Not testwfhandler Is Nothing Then
Call testwfhandler.test()
End If
Set testwfhandler= Nothing
是从安装在我的服务器将第三方应用程序(外表套上工作流程)执行这个VB脚本。
不知道为什么会出现上述错误,当我直接从服务器执行相同的代码时,它工作正常。
test()这个函数只会创建一个日志文件并在其中添加一些文本。
答
答案已经通过发表了,但我想它 有意义的声讯真正的答案,以便其他人可以很容易地找到它 回来。
根据您的VBScript如何加载/执行,您应该使用RegAsm.exe的32位或64位版本注册您的DLL。
在64位的操作系统,你会发现在regasm的32位版本,C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
和64位regasm的版本应该是, C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe
如果你想运行在64位机器上自己以32位模式运行VBScript请参阅How do I run a VBScript in 32-bit mode on a 64-bit machine?
有两个版本的regasm.exe,一个32位和一个64位版本。在64位操作系统上的问题,选择正确的。或两者。 – 2012-07-11 10:37:40
我在C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319中使用regasm.exe这个位置 – user1428019 2012-07-11 10:51:33
另一个是C:\ Windows \ Microsoft.NET \ Framework目录,它是32位版本.NET – 2012-07-11 10:54:49