Pass a string from C# to a C++ DLL in .NET (and get a pointer to the string's chars)


/ Published in: C#
Save to your folder(s)

Specifically, this code enables you to pass a string from C# into C++ managed code and then get a C++ pointer to the string's chars.

[Marshal.StringToHGlobalAnsi Method](http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.stringtohglobalansi.aspx) from MSDN.

Good [information about native vs. managed types](http://blog.rednael.com/2008/08/29/MarshallingUsingNativeDLLsInNET.aspx).

Related [forum post](http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/5fe46030-76f7-4988-9ce3-fc21a30ee3a2/).


Copy this code and paste it in your HTML
  1. C#
  2. void cSharpMethod() {
  3. String myString = "ASCII/ANSI String in C#";
  4. cPlusPlusClass.cPlusPlusMethod(myString);
  5. }
  6.  
  7. C++
  8. int cPlusPlusMethod(System::String^ aString) {
  9. char* charPtr = (char*)Marshal::StringToHGlobalAnsi(aString).ToPointer();
  10. // Use it...
  11. Marshal::FreeHGlobal(IntPtr(charPtr)); // Free memory
  12. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.