C # Marshal typedef char T_STRING [MAX_STRING_SIZE]

1

Как Маршал:

[C++]
#define MAX_STRING_SIZE 255
typedef char T_STRING[MAX_STRING_SIZE];
typedef struct
{
    unsigned long m_ID;
    T_STRING m_name;
} Result;

В С#?

В настоящее время я это делаю (но это не работает):

[C#]
[StructLayout(LayoutKind.Sequential)]
public struct Result
{
    public uint m_ID;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
    public char[] m_name;
}

Я попытался использовать IntPtr вместо char [] с равным нерабочим результатом. И с, и без [MarshalAs (...)].

  • 0
    Без компилятора C #, что происходит? Ошибки компиляции? Ошибки во время выполнения?
  • 0
    «Это не работает» - это слова, которых следует избегать в вопросе. Вы действительно должны включать сообщения об ошибках.
Показать ещё 1 комментарий
Теги:
pinvoke
marshalling

1 ответ

0
Лучший ответ

Маршал:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct Result
{
    public uint m_ID;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
    public string m_name;
}
  • 0
    Это работает. Я установлю это как ответ, когда таймер позволит мне.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню