Been trying to figure out a solution to this problem since long. Would appreciate if someone can throw some light.
I am calling a managed C# dll in VC++ code. My problem is that I'm unable to pass the bstr data from VC++ to C#. In fact, the bstr data is coming to C#, but its all junk values that looks something like this...
Ã§âÂ¨Ã§ÂÂ´Ã¢Â¼ÂºÃ£âÂ¯Ã£ËÂ¹Ã£âÂ®Ã£ Â¶Ã£âÂ®Ã£âÂ°Ã£âÂ®Ã£ÅÂ°Ã¦ÅÂ¯Ã¢Â½Â·Ã§â¢Â°Ã¥ Â½Â´Ã§Â¡Â¸Ã¢Â¹Â¸Ã¦Â¡Â°p.280Ã£â¦âÃâ
Though if I pass a data of type "int", I get the correct value in C#. The problem is with the bstr values. This is how my code is in VC++...
unsigned char* URL ;
I have typecasted this unsigned char* into a binary string as following
BSTR PURL =SysAllocString((BSTR)URL.p);
and call a function in VC++ written in C# dll as following
pIclass1->raw_HTTP_Put_Query (&PURL ,nBufLen,&retVal );
In C# I receive the values as following
public int HTTP_Put_Query(ref string PURL,int nBufLen)
Now, the problem is that the PURL parameter of type "bstr" recieves junk values in the C# dll, the nBufLen variable being of type "int" is getting correct value.
Is there a way I can convert the bstr to string so that it doesnt return junk values?
Would really appreciate much needed help.