我写一个vc atl dll,里面有一个函数
STDMETHODIMP CATLDll::BSTRRefTest(BSTR *tempStr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here CString s = *tempStr;
s = s + s;
BSTR tbstr = s.AllocSysString();
tempStr = &tbstr;
return S_OK;
}编译注册ATLDll后在vb中调用
Dim VcDll As ATLDllLib.XXXX
Set VcDll = New XXXX
Dim s As String
s = "abcd"
VcDll.BSTRRefTest s '这里系统报错
MsgBox "s =" & s
结果运行到“VcDll.BSTRRefTest s”一句vb报错“Compile error:Wrong number of arguments or invalid property assignment”
什么原因,如何实现vb向atl dll输入并返回字符串呢?谢谢!
STDMETHODIMP CATLDll::BSTRRefTest(BSTR *tempStr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here CString s = *tempStr;
s = s + s;
BSTR tbstr = s.AllocSysString();
tempStr = &tbstr;
return S_OK;
}编译注册ATLDll后在vb中调用
Dim VcDll As ATLDllLib.XXXX
Set VcDll = New XXXX
Dim s As String
s = "abcd"
VcDll.BSTRRefTest s '这里系统报错
MsgBox "s =" & s
结果运行到“VcDll.BSTRRefTest s”一句vb报错“Compile error:Wrong number of arguments or invalid property assignment”
什么原因,如何实现vb向atl dll输入并返回字符串呢?谢谢!
要改:
STDMETHODIMP CATLDll::BSTRRefTest(BSTR tempStr)
[id(7), helpstring("method BSTRRefTest")] HRESULT BSTRRefTest([out,retval] BSTR *tempStr);
发现如果将*tempStr定义为[out,retval]就会出现上述问题,而定义为[in,out]就可以运行,但只能向dll传入字符串,无法将修改结果传回给vb程序,请问是什么原因?如何修改?谢谢!