100分! vc写的dll,函数如何将字符串传递给vb?
vc写dll,我只会写int类型的函数:
__stdcall int CALLBACK CalcSum(int a,int b);
vb中可以声明:
Private Declare Function MySum Lib "d:\MyDLL.dll " (ByVal S As Integer, ByVal D As Integer) As Integer
这样就可以在vb中使用了,可是我现在想在dll中写一个能够返回字符串的函数,并用vb的label控件把函数返回的字符串显示出来,请问dll里怎么写?vb里怎么声明?label控件怎么调用它?如能解决,立即给分,恳请大家帮帮忙!
[解决办法]
__stdcall int CALLBACK CalcSum(int a,int b,char *c);
vb中可以声明:
Private Declare Function MySum Lib "d:\MyDLL.dll " (ByVal S As Integer, ByVal D As Integer, ByRef c as string) As Integer
[解决办法]
用BSTR
CString::AllocSysString
BSTR AllocSysString ( ) const;
throw( CMemoryException );
Return Value
Points to the newly allocated string.
或者
SysAllocString
BSTR SysAllocString(
OLECHAR FAR* sz
);
[解决办法]
__stdcall char * CALLBACK CalcSum(int a,int b);
在vb中定义函数的返回值就字符串类型或者字符指针就可以了。。。
[解决办法]
BSTR, RETVAL, ByRef
[解决办法]
试试:
VB中String转换为VC中的BSTR,只要把参数类型改了就可以了,但要注意使用ByRef
[解决办法]
http://support.microsoft.com/kb/187912