How can return a String from C++ DLL to VB?
I am returning a HASH DEFINE string from a DLL developed using C++ to VB as BSTR. But in some cases VB cannot get the string at all.What all should I do for this to get the same correctly. Can you suggest me with a better idea.
My C++ code is as given below:
BSTR __stdcall ReturnFn( )
{
return (BSTR)_T("RETURN VALUE");
}
Thanks in advance
Re: How can return a String from C++ DLL to VB?
Try returning a char instead. BSTR is a 32bit pointer so you need to get return ByRef and not ByVal
Jean-Guy
Re: How can return a String from C++ DLL to VB?
Hi,
your code cannot work, because you just cast a string to a BSTR. But a BSTR has a 4 Byte header in front of its actual text, holding the length of the text.
Try
BSTR __stdcall ReturnFn( )
{
return SysAllocString(OLESTR("RETURN VALUE"));
}
OLESTR("text") is the same as L"text", but you should use OLESTR("text").
The memory of the string is freed by the VB-client.
Hope this helps
Peter