我正在使用一个用c语言编写的dll。我已经将所有我需要的函数导入到我的C#程序中。大多数函数我都能够正常工作,但是有几个函数我遇到了问题。我遇到问题的函数需要一个结构体作为输入。我认为我需要在C#中定义这个结构体,我已经尝试过了,但是我开始感到困惑,所以我会把我尝试过的东西留出来。这个结构体相当长,所以我会简单地介绍一下它在c语言中的样子:
typedef struct chain_link_info
{
unsigned short command;
unsigned long* buff_id;
FLAGS_TYPES flags; // this is a union that i will list below
} CHAIN_LINK_INFO;
typedef union flags_type
{
unsigned long ulong;
struct
{
unsigned short std_flags;
unsigned short high
} ushort;
struct
{
unsigned int a : 1;
unsinged int b : 1;
unsinged int c : 1;
unsinged int d : 1;
unsinged int e : 2;
unsinged int f : 1;
unsinged int g : 1;
unsinged int h : 1;
unsinged int i : 1;
unsinged int j : 1;
unsinged int k : 1;
unsinged int l : 1;
unsinged int m : 1;
unsinged int n : 1;
unsinged int o : 1;
unsigned int high_word :16
} std_bits;
} FLAGS_TYPE;
什么是在C#中定义这些结构的正确方式?谢谢。