调用c++函数时传入的结构体中包含指针怎么办? 本帖最后由 wsw0515 于 2011-09-21 10:26:46 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 myconfig pConfig;doconfig(ref pConfig);ref传值一般是在函数内部会对参数重新赋值的,所以你无需赋初始值,如果一定要赋初始值,也无关紧要 public IntPtr shortArray;//short数组指针主要是不知道这部分怎么赋值 楼主,你把myconfig结构体的C++代码贴出来 typedef struct myconfig{ ushort max; ushort min; ushort *array;}这是c++结构体文档说明 也就是说,array的大小是max-min ,对吧? myconfig cfg=new myconfig ();cfg.max =100;max.min =0;ushort[] ary=new ushort[100]{0};//自己给ary赋值int size=sizeof(ushort)*(cfg.max-max.min);IntPtr buffer = Marshal.AllocHGlobal(size);Marshal.StructureToPtr(structure, buffer, false);cfg.shortArray=buffer ; //这里给指针赋值! 谢谢各位,我的可以了用Marshal.Copy将数组拷贝到我所创建的直接就可以了 Marshal.StructureToPtr(structure, buffer, false);这句报错了。 对用Marshal.Copy 方法 (Int16[], Int32, IntPtr, Int32) 更直接,简单,没有必要搞得我那么复杂 突发奇想::语言之间可以混用麽?? 怎么实现交错数组数据显示在TEXTBOX OleDB读取CSV文件的字符格式问题 怎样在代码中实现单击按钮控制页面中的iframe跳转 如何实现信用卡支付页面 WINFORM 选中datagrid中的一个单元格点回车,怎么捕捉回车事件? 请问:Oracle中如何取记录呢,我的程序有记录,为何出错! WCF调用时如何在请求中加自定义的头 用DataGridView如何显示强数据类型. 关于WPF dispatcherobject的问题 求助!算法问题,某个金额可以买多少种商品 中文字符串模糊匹配算法
doconfig(ref pConfig);
ref传值一般是在函数内部会对参数重新赋值的,所以你无需赋初始值,如果一定要赋初始值,也无关紧要
主要是不知道这部分怎么赋值
{
ushort max;
ushort min;
ushort *array;
}
这是c++结构体文档说明
max.min =0;
ushort[] ary=new ushort[100]{0};
//自己给ary赋值int size=sizeof(ushort)*(cfg.max-max.min);
IntPtr buffer = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(structure, buffer, false);
cfg.shortArray=buffer ; //这里给指针赋值!
用Marshal.Copy将数组拷贝到我所创建的直接就可以了