我想导入Win32API的extern函数。使用Win32API:结构内的联合生成TypeLoadException
守则从API(C语言)看起来是这样的:
typedef struct _BLUETOOTH_ADDRESS {
union {
BTH_ADDR ullLong;
BYTE rgBytes[6];
};
} BLUETOOTH_ADDRESS;
我的C#实现是这样的:
[StructLayout(LayoutKind.Explicit, Size = 8)]
public struct BLUETOOTH_ADDRESS
{
[FieldOffset(0)]
public ulong ullLong;
[FieldOffset(2)]
public byte[] rgBytes;
};
的问题是:当我创建的结构,它会抛出一个TypeLoadException,错误代码: System.TypeLoadException:“无法从程序集'BleLab,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'加载类型'BLUETOOTH_ADDRESS',因为它包含偏移量为2的对象字段这是不正确对齐或覆盖d通过非对象字段。“
你有什么想法解决这个问题或问题在哪里?
问候
编辑: 忘了提供调用的方式:
var ba = new Win32API.BLUETOOTH_ADDRESS();
ba.rgBytes = new byte[6];
你知道什么是C'union吗? – alk
我试图理解 – IceTrailer