热情软件屋

 

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混合编程"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio