C#调用C++结构体(结构体有指针成员),如何调用

C++中定义为structBoundaryTriangle{public:int*Best;char*Address;intIndex;};在C#中如何定义[Struct... C++中定义为
struct BoundaryTriangle
{
public:
int* Best;
char* Address;
int Index;
};
在C#中如何定义
[StructLayout(LayoutKind.Sequential)]
public struct BoundaryTriangle
{
public int Index;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4)]
public int[] Best;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 9)]
public string Address;
}
我是这样定义的,没有报错,但结果不对
展开
 我来答
空雪梦见
2013-12-23 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1219万
展开全部
1、因为结构体里都是指针,所以用ByVal是不正确的。ByVal在结构体里是数组的时候可以用
2、知道Best数组的大小吗?不知道的话,可能只能用IntPtr。然后在需要数据访问的时候Marshal.Copy出来。知道的话,可以用LPArray
3、顺序错了。Best放在第一个,Address放在第二个,Index放在第三个
4、Address的MarshalAs中,类型应该用LPStr
追问
首先谢谢你的回答,在这个程序中,Best的大小是知道的,但Address的大小不确定,Address应该如何处理呢?(Best的大小为4,Address长度不确定,能否给出C#中的完整代码呢)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式