|
想使用CallGrip,想将一个新的Tag类型的obj数组传递过去,做相应的计算赋值后把值传递回来。有以下的代码:
Args[] grip_arg_list = new Args[1];
Tag[] obj = new Tag[2];
grip_arg_list[0].type = UFConstants.UF_TYPE_TAG_T_ARRAY;
grip_arg_list[0].length = 2;
GCHandle IndicesHandle = GCHandle.Alloc(obj, GCHandleType.Pinned);//为指定对象分配指定类型的句柄
IntPtr s = IndicesHandle.AddrOfPinnedObject();
grip_arg_list[0].address = s;
IndicesHandle.Free();
CallGrip("E:\\Demo.grx",1,ref grip_arg_list[size=1em]);//引用函数
在UG中调试出现了错误:
System.ArgumentException: Object 包含非基元或非直接复制到本机结构中的数据。
在 System.Runtime.InteropServices.GCHandle.InternalAlloc(Object value, GCHandleType type)
在 System.Runtime.InteropServices.GCHandle.Alloc(Object value, GCHandleType type)
在 Program.Main(String[] args) 位置 C:\Users\mo\Desktop\callGripDemo\Program.cs:行号 124
&MACRO MESSAGE_BOX -2 外部库出错。有关详细信息,请参见系统日志
[size=1em]
[size=1em]124行内容是:
GCHandle IndicesHandle = GCHandle.Alloc(obj, GCHandleType.Pinned);
麻烦各位大佬们了!!
|
-
报错提示
|