Я посылаю серию char arrays
из C ++ в мою программу на C #.
Функции c ++ выглядят примерно так:
ReturnChar.cpp
extern "C" RETURNCHAR_API char* testString()
{
return test;
}
ReturnChar.h
extern "C" RETURNCHAR_API char* __cdecl testString();
ReturnChar Import 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 #. Как я могу решить эту проблему?
Я не собираюсь использовать wchar_t
в моей программе на C ++, потому что у меня есть операции, выполняемые с массивами символов. Можно ли как-нибудь закодировать это в C #?