Click to See Complete Forum and Search --> : How can return a String from C++ DLL to VB?


saju_peruvachira
June 22nd, 2001, 02:06 AM
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

Jean-Guy2000
June 22nd, 2001, 10:36 AM
Try returning a char instead. BSTR is a 32bit pointer so you need to get return ByRef and not ByVal

Jean-Guy

pherweg
June 23rd, 2001, 05:44 AM
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