Rahul M

Rahul M

  • NA
  • 9
  • 11.4k

Pass BSTR from C++ to C#

Jun 7 2011 1:56 AM

I have C# project "X" ,I have exposed methods in it to the C++ project "Y".

X has method signature as follows -

public void WriteInformation(string sInfo){m_logger.ErrorInfo("{0}", sInfo);}

As I am exporting it to a C++ using .TLB file I checked declaration of this method in .tlh file which generates on #import of .tlb file.

virtual HRESULT __stdcall WriteInformation (    /*[in]*/ BSTR sMsg ) = 0;

I am calling this method in C++ project and passsing argument as follows -

oLog->WriteInformation(BSTR("Info write successful"));


Issue here is the string passed from C++ always becomes garbage or null , I debugged it and I can see value of sInfo is always garbage or null.

 

Please let me know what method should be followed to pass string from C++ to C#.


Answers (1)