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#