Revision: 11910
Updated Code
at February 23, 2009 12:01 by pckujawa
Updated Code
C# void cSharpMethod() { String myString = "ASCII/ANSI String in C#"; cPlusPlusClass.cPlusPlusMethod(myString); } C++ int cPlusPlusMethod(System::String^ aString) { char* charPtr = (char*)Marshal::StringToHGlobalAnsi(aString).ToPointer(); // Use it... Marshal::FreeHGlobal(IntPtr(charPtr)); // Free memory }
Revision: 11909
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 23, 2009 11:38 by pckujawa
Initial Code
C# void cSharpMethod() { String myString = "ASCII/ANSI String in C#"; cPlusPlusClass.cPlusPlusMethod(myString); } C++ int cPlusPlusMethod(System::String^ aString) { char* charPtr = (char*)Marshal::StringToHGlobalAnsi(aString).ToPointer(); }
Initial URL
Initial Description
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/).
Initial Title
Pass a string from C# to a C++ DLL in .NET (and get a pointer to the string's chars)
Initial Tags
c, Net
Initial Language
C#