Кодирование из C ++ в C # - PullRequest
       1

Кодирование из C ++ в C #

0 голосов
/ 20 февраля 2012

Я посылаю серию 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 #?

1 Ответ

1 голос
/ 20 февраля 2012

Вы должны использовать в своей программе на C ++ wchar_t и выполнять вместо этого операции с wchar_t массивами.

При этом вам необходимо добавить CharSet = CharSet.Ansi вDllImport параметры.

...