关于VBA中调用vc作成的dll函数的可以返回值的参数传递的问题 (急!! 多谢多谢)
我用vc作成了一个dll函数. 定义如下:
extern "C" void __declspec(dllexport) SourceMake(LPARAM asHandleType1, VARIANT &p){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
p.vt = VT_BSTR;
p.bstrVal=SysAllocString(L"MyNewContainer");
}
然后用vba调用
Private Declare Sub SourceMake Lib "SourceMake.dll" (str As Any, src As
Variant)
Private Sub Command1_Click()
Dim src As Variant
Dim str As String
str = "100000"
Dim b() As Byte
b = StrConv(str, vbFromUnicode)
ReDim Preserve b(UBound(b) + 1)
b(UBound(b)) = 0
On Error GoTo EX
src = String(255, vbNullChar)
Call SourceMake(b(0), src )
MsgBox src
EX:
MsgBox Err.Description
End Sub
我的用意是str 只是作为传入参数(这个没用问题),src 能够将dll函数中处理后的子符串
串回来.
但实际使用中,执行后会出现"bad dll calling convention" 或 windows异常的错误.
我试了好多种类型,都不能传回值.我觉得应该是类型匹配的问题.
但实在不知如何解决, 特此向各位高手请教.
多谢多谢.