在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
[StructLayout(LayoutKind.Sequential)] public struct GoMem { public IntPtr data; public UInt64 len; public UInt64 cap; } public string GetPosition() { double[] iresult = new double[6] { 0, 0, 0, 0, 0, 0 }; GCHandle handle4 = GCHandle.Alloc(iresult, GCHandleType.Pinned); GoMem goMem4 = new GoMem(); IntPtr pointer4 = handle4.AddrOfPinnedObject(); goMem4.cap = (ulong)iresult.Count(); goMem4.len = (ulong)iresult.Count(); goMem4.data = pointer4; CTToRobotGo(goMem4); Marshal.Copy(goMem4.data, iresult, 0, iresult.Length); return string.Join(",", iresult); } [DllImport("DockingCal.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] public static extern void CTToRobotGo(GoMem robotpos); Go代码里面用到了片段类型,转换到c# 就是结构体 typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; VS 编译的时候记得用X64编译 |
请发表评论