VC编写的动态链接库,其返回的字符串在VB中怎样正确读取
编号:QA004555
建立日期: 2002年3月2日 最后修改日期:2002年3月2日
所属类别:
xfh:
操作系统: win98
编程工具: VC60/VB60
问题: VC编写的动态链接库,其返回的字符串在VB中怎样正确读取?
在动态链接库中用函数返回,而不是参数返回。如:
char * cDate(int year,int month,int day)
{
……;
}
从网上查找了许多资料,均介绍的是VB向VC传递字符串,虽然挺麻烦,但还是可行的。为什么我们不能象调用API函数一样,用结构传输参数,或用于返回,而必需用结构数组?
水平: 中级
回答:
直接返回char *是不行的,VB不支持这种做法。正如你在资料中看到,大多数都是在VB中先给字符串分配空间,再传递给VC,在DLL中可以修改字符串,但不能超过VB中分配的空间。如果你希望直接返回字符串,必须使用BSTR类型,这实际上就是VB中的字符串所使用的类型。下面是一个简单的例子:
EXTERN_C BSTR WINAPI RetStr()
{
char *str="1234567890";
return SysAllocString((BSTR)str);
}
相关问题:
QA000488 "在VB中如何传递指针给DLL"
QA000072 "VB和VC混合编程"
此问题由李海回答。
| |
|
|
| |
|
|