Взаимодействие между C++ и C#

У меня есть это struct на С++:

struct TEXTMSGSTR
{
    HWND Sender;
    wchar_t Text[255];
    //wchar_t *Text;
};

и в С#:

public struct TEXTMSGSTR
{
    public IntPtr Sender;
    public ? Text;
}

который я отправляю как часть сообщения COPYDATASTRUCT из неуправляемого в управляемый код. Какой будет правильная конструкция struct на стороне С#, поскольку в С# нет wchar_t? Я пробовал строку и т. д., но, конечно, появляются ошибки!

Может ли кто-нибудь дать мне несколько идей о том, как это маршалировать, а я новичок в этом?:

TEXTMSGSTR tx = (TEXTMSGSTR)Marshal.PtrToStructure(cds.lpData, typeof(TEXTMSGSTR));

person flavour404    schedule 19.05.2009    source источник
comment
Какие ошибки возникают при использовании строки?   -  person scottm    schedule 20.05.2009
comment
Вы должны проверить stackoverflow.com/questions/ 188299/ Все ваши ответы там. :)   -  person Randolpho    schedule 20.05.2009
comment
Если вы используете только прямую строку без сортировочной части, вы получите повреждение памяти.   -  person flavour404    schedule 20.05.2009
comment
Рандольфо, я проверю ссылку. Спасибо за ответ.   -  person flavour404    schedule 20.05.2009


Ответы (2)


Попробуйте System.Runtime.InteropServices.UnmanagedType LPTStr или ByValTStr.

Также посмотрите мой ответ на этот вопрос

person abatishchev    schedule 19.05.2009
comment
Я проверю ссылку, мне действительно нужно понять этот материал. Я в порядке с публикацией сообщений, просто когда я добираюсь до сортировки, я действительно запутался. Спасибо. - person flavour404; 20.05.2009

person    schedule
comment
Спасибо Мердад, это сработало отлично. Мне очень нужно прочитать статьи об этом, это не просто! Спасибо. - person flavour404; 20.05.2009