WINAPI int VCFun(LPCTSTR sString);
上面用VC编写的函数返回值为int时,在VB中声明:
Private Declare Function VCFun Lib "VCFun.dll" (ByVal sString As String) As Long
就可以正常调用;但是,如果我想用VCFun返回一个字符串,而不是int型,该怎么声明啊??下面的两种方式都不行:
WINAPI LPCTSTR VCFun(LPCTSTR sString);
WINAPI String VCFun(LPCTSTR sString); 到底该怎么声明啊?大侠请指教!谢谢先
上面用VC编写的函数返回值为int时,在VB中声明:
Private Declare Function VCFun Lib "VCFun.dll" (ByVal sString As String) As Long
就可以正常调用;但是,如果我想用VCFun返回一个字符串,而不是int型,该怎么声明啊??下面的两种方式都不行:
WINAPI LPCTSTR VCFun(LPCTSTR sString);
WINAPI String VCFun(LPCTSTR sString); 到底该怎么声明啊?大侠请指教!谢谢先
大多数都是在VB中先给字符串分配空间,再传递给VC,在DLL中可以修改字符串,但不能超过VB中分配的空间。如果你希望直接返回字符串,必须使用BSTR类型,这实际上就是VB中的字符串所使用的类型。下面是一个简单的例子:
EXTERN_C BSTR WINAPI RetStr()
{
char *str="1234567890";
return SysAllocString((BSTR)str);
}
同时VB也必须使用ByRef约定