2012-02-20 32 views
0

char arraysをC++から私の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

[C#からC++へのInterop送信文字列]の複製が可能です。(http://stackoverflow.com/questions/683013/interop-sending-string-from-c-sharp-to-c) –

答えて

1

は、C++プログラムでwchar_tを使用しており、代わりにwchar_tアレイで操作を実行してください。

つまり、DllImportパラメータにCharSet = CharSet.Ansiを追加する必要があります。

関連する問題