2012-02-20 39 views
0

我正在從C++發送一系列char arrays到我的C#程序。從C++編碼到C#

的C++函數是這個樣子:

ReturnChar.cpp

extern "C" RETURNCHAR_API char* testString() 
{ 
    return test; 
} 

ReturnChar.h

extern "C" RETURNCHAR_API char* __cdecl testString(); 

ReturnChar導入C#

public static class ImportTest 
    { 
     [DllImport("ReturnChar.dll", EntryPoint = "testString", CallingConvention = CallingConvention.Cdecl)] 
     public static unsafe extern char* testString(); 
    } 
    public partial class MainWindow : Window 
    { 
     public unsafe MainWindow() 
     { 
      InitializeComponent(); 
      try 
      { 

       StringBuilder sb = new StringBuilder(new string(ImportTest.testString())); 
       textBox1.Text = sb.ToString(); 
      } 
      catch(Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
    } 

實際上我得到了結果,但看起來像在C++和C#之間存在編碼問題。我該如何解決這個問題?

我不打算在我的C++程序中使用wchar_t,因爲我的操作是在char數組上完成的。我可以用C#編碼嗎?

+0

[Interop從C#發送字符串到C++]的可能重複(http://stackoverflow.com/questions/683013/interop-sending-string-from-c-sharp-to-c) – 2012-02-20 07:07:57

回答

1

應該是使用wchar_t貫穿在你的C++程序,並在wchar_t陣列執行的操作來代替。

也就是說,您需要將CharSet = CharSet.Ansi添加到DllImport參數中。