关于DLLimport参数传递问题
函数原型:
HI_S32
HI_SDK_GetConfig (
HI_U32 u32Handle,
HI_U32 u32Command,
HI_VOID* pBuf,
HI_U32 u32BufLen
);
c#加载代码
[DllImport("HISDK.DLL")]
public static extern int HI_SDK_GetConfig(IntPtr Ihandler, int command, IntPtr buf, int buflen);
结构定义:
public struct HI_S_PRODUCTID
{
public int(原型是char[]) id;
}
函数调用代码:
HiSDK.HI_S_PRODUCTID t = new HiSDK.HI_S_PRODUCTID();
IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(t));
unsafe
{
Marshal.StructureToPtr(t, ptr, false);
int ret = HiSDK.HI_SDK_GetConfig(r, HiSDK.HI_NVR_CMD_PRODUCTID, ptr, Marshal.SizeOf(typeof(HiSDK.HI_S_PRODUCTID)));
t = (HiSDK.HI_S_PRODUCTID)Marshal.PtrToStructure(ptr, typeof(HiSDK.HI_S_PRODUCTID));
}
问题说明:
在函数原型中PRODUCTID 的id参数原型是char[],在c#中应该以string 代替,但现在的问题就是string 传入函数获取不到修改之后的值,但INT类型可以。
望各位高手指教