View Single Post
  #1 (permalink)  
Old July 4th, 2007, 10:38 AM
dotnetuncle dotnetuncle is offline
Authorized User
 
Join Date: Jul 2007
Posts: 12
Thanks: 0
Thanked 0 Times in 0 Posts
Default Getting junk bstr values in managed C# DLL from VC

Hi All



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.



Thanks



Vishal Khanna

http://www.dotnetuncle.com













http://www.dotnetuncle.com
__________________
http://www.dotnetuncle.com
Reply With Quote