C#外部调用非托管DLL问题太纠结在WINXP下一切正常WIN7报内存出错
特征就是 winxp下正常
到win7的时候,会报尝试读取或写入受保护的内存。这通常指示其他内存已损坏
断点跟踪的时候发现时回调函数结束后报错。
//原型: void (*callbackMessage)(void *data, const MQTTC_Message *msg);
[UnmanagedFunctionPointer(CallingConvention.Cdecl,CharSet=CharSet.Ansi)]
public delegate void callbackMessage(IntPtr data, ref MQTTC_Message msg);
// typedef struct
//{
// uint16_t mid; // 信息ID
// int8_t *topic; // 订阅信息的主题
// uint8_t *payload; // 订阅的信息,即数据
// uint32_t payloadlen; // 订阅的信息的长度
// int32_t qos; // 服务质量级别
// int8_t retain; // 保持,扩展功能使用
//}MQTTC_Message;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct MQTTC_Message
{
public ushort mid;
public string topic;
public Byte[] payload;
public uint payloadlen;
public int qos;
public char retain;
}
有人遇到过没