У меня есть DLL и файл заголовка, которые были написаны на Visual C ++. Мне нужно использовать следующую функцию в проекте C #:
LIBSPEC int
CprFindDevices(
PCprDeviceInfo *ppDevInfo,
int *pNumDevices,
DWORD timeout
);
Я могу импортировать его с DllImport
, но не могу понять, как реализовать следующую структуру в C #:
typedef struct _CprDeviceInfo
{
unsigned char id[ID_LEN];
unsigned char macAddr[MAC_LEN];
in_addr inAddr;
char ipAddr[IP_LEN];
char devName[INFO_NAME_LEN];
char port1Name[INFO_NAME_LEN];
char port2Name[INFO_NAME_LEN];
int tcpPort1;
int tcpPort2;
char interfaceIpAddr[IP_LEN];
} CprDeviceInfo, *PCprDeviceInfo;
Все переменные в верхнем регистре - это все известные константы, которые я могу использовать в своем проекте на C #.
Я знаю, что должен использовать [StructLayout(LayoutKind.Sequential)]
, но не уверен, что эквивалентные типы для каждого из элементов структуры, и какой будет сигнатура функции, когда я ее импортирую. Прошло много времени с моих дней в C ++.