C# 调用C++ 动态库DLL 记录一次类型转换错误

错误信息:
原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

正例:
[DllImportAttribute(@”..\bin\HCNetSDK.dll”)]
public static extern bool NET_DVR_STDXMLConfig(int iUserID, ref NET_DVR_XML_CONFIG_INPUT lpInputParam, ref NET_DVR_XML_CONFIG_OUTPUT lpOutputParam);

反例:
[DllImportAttribute(@”..\bin\HCNetSDK.dll”)]
public static extern bool NET_DVR_STDXMLConfig(long iUserID, ref NET_DVR_XML_CONFIG_INPUT lpInputParam, ref NET_DVR_XML_CONFIG_OUTPUT lpOutputParam);

总结:
c++里的LONG(long) 对应c#里的System.Int32
其他类型对应关系参考:c调用c的dll-数据类型对应关系