Vbscript 无法连接COM对象。 我在C++上编写了一个COM库。 此库中只有一个函数 STDMETHODIMP TMyCodeBitmapGenerateImpl::GenerateMyFile(BSTR ATextToEncode, BSTR APathToSaveFile)

Vbscript 无法连接COM对象。 我在C++上编写了一个COM库。 此库中只有一个函数 STDMETHODIMP TMyCodeBitmapGenerateImpl::GenerateMyFile(BSTR ATextToEncode, BSTR APathToSaveFile),vbscript,Vbscript,库名为MyCode\u COM\u库 图书馆已在系统中注册 尝试 DataString = "data123" Filename = "D:\img.bmp" with CreateObject("MyCode_COM_Library.TMyCodeBitmapGenerateImpl") .GenerateMyFile(DataString,Filename) end with 我得到错误所需对象 再试一次 dim ws dim wd Set ws = CreateObject("MyCo

库名为MyCode\u COM\u库

图书馆已在系统中注册

尝试

DataString = "data123"
Filename = "D:\img.bmp"
with CreateObject("MyCode_COM_Library.TMyCodeBitmapGenerateImpl")
.GenerateMyFile(DataString,Filename)
end with
我得到错误所需对象

再试一次

dim ws
dim wd

Set ws = CreateObject("MyCode_COM_Library.TMyCodeBitmapGenerateImpl")
Set wd = ws.GenerateMyFile(datastring, FileName)
同样的错误

在VB的参考中,我添加了这个库

Dim wd

Dim wa As MyCodeBitmapGenerate

datastring = "data123"
FileName = "D:\img123.bmp"

wd = wa.GenerateMyFile(datastring, FileName) ' the function returns int
然后编译器选择

.GenerateMyFile

并给出错误预期函数或变量

请帮助我连接VB和我的COM库


谢谢。

如果我在引用中添加库并用VB编写这样的代码,那么一切都可以

Private Sub Command1_Click()

Dim azclib As AztecCodeBitmapGenerate

ds = "12343445454243442Data1234567890"
fp = "D:\imgDS.bmp"

Set azclib = New AztecCodeBitmapGenerate
azclib.GenerateAztecFile ds, fp

End Sub
但是如果我想用VBScript编写代码,比如

Dim dt
Dim fp

Dim we, ws

dt = "123456789"
fp = "C:\imgDT.bmp"

Set we = CreateObject("AztecCode_COM_Library.TAztecCodeBitmapGenerateImpl")

Call we.GenerateAztecFile(dt, fp)
然后我需要一个错误对象-800A01A8 on Call we.GEnerateAztecFile(dt,fp)。
我认为对象“we”未创建,但我不确定您的组件是否已正确注册?你能在注册表中看到它的条目吗?它是32位还是64位组件?您使用的是32位还是64位版本的CSCRIPT/WSCRIPT?是的,组件已注册。它是32位组件。我在您最初发布的VB代码中使用了32位WScript,看起来您没有创建
wa
的实例。您声明了它(
Dim wa As mycodibitmapgenerate
),但是您仍然需要使用
Set wa=New mycodibitmapgenerate
创建对象,然后才能调用
wa
的属性或方法,就像您在最后一行尝试做的那样。如果COM库无效或不存在,您将获得CreateObject()行出现“ActiveX组件无法创建对象”错误。因此,必须正确注册COM库。请尝试在VB中使用CreateObject()语法,看看它是否有效。COM类是否支持IDispatch?如果不支持,则无法使用CreateObject()。Set we=CreateObject(“AztecCode_COM_Library.TAztecCodeBitmapGenerateImpl“)工作正常。是的,只要COM库已正确注册,它就会运行。但一旦您尝试调用方法或属性,它就会使用IDispatch接口来定位该方法或属性。如果您的COM类不支持IDispatch,则任何方法或属性调用都将失败。谢谢!我将尝试将IDispatch添加到DLL中Library@Bond,Tha谢谢!我添加了IDispatch接口,现在它可以工作了