关于DLLimport参数传递问题

jack20yao 2013-03-14 09:57:49
函数原型:
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类型可以。
望各位高手指教
...全文
238 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack20yao 2013-03-14
  • 打赏
  • 举报
回复
是海芯的接口
咖啡老猫 2013-03-14
  • 打赏
  • 举报
回复
你这个是海康的接口?
jack20yao 2013-03-14
  • 打赏
  • 举报
回复
谢谢回复,但是BYTE[]每次获取的值都不固定
gxingmin 2013-03-14
  • 打赏
  • 举报
回复
c++里的char [],c#可以用byte []代替
  • 打赏
  • 举报
回复
试试byte[]
jack20yao 2013-03-14
  • 打赏
  • 举报
回复
现在在函数里传个结构体的指针,想获取结构体更新后的信息也获取不了,求助大虾

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧