C# вызывает функцию C, которая возвращает структуру с массивом символов фиксированного размераC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# вызывает функцию C, которая возвращает структуру с массивом символов фиксированного размера

Сообщение Anonymous »

Итак, было много вариантов этого вопроса, и, просмотрев несколько, я до сих пор не могу понять.

Это код C:< /p>

typedef struct
{
unsigned long Identifier;
char Name[128];
} Frame;

Frame GetFrame(int index);


Это код C#:

struct Frame
{
public ulong Identifier;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 128)]
public char[] Name;
}

[DllImport("XNETDB.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern Frame GetFrame(int index);


Это последняя попытка, которую я пробовал на C#, и она кажется вполне логичной, но я получаю ошибку «Сигнатура метода несовместима с PInvoke». Итак, я как бы растерялся, что попробовать дальше. Любая помощь приветствуется.

Спасибо,
Кевин

Обновлено Кевин добавил это как редактирование в мой ответ

Вместо этого мне следует изменить свой код C:

void GetFrame(int index, Frame * f);


и используйте вместо него C#:

struct Frame
{
public uint Identifier;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string Name;
}

[DllImport("XNETDB.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern void GetFrame(int index, ref Frame f);


Подробнее здесь: https://stackoverflow.com/questions/103 ... char-array
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»