C#如何调用C++的DLL的结构体数组指针

C接口structPointVec3f{//储存XYZ的坐标值.floatxValue;floatyValue;floatzValue;};extern"C"__decl... C接口

struct PointVec3f{//储存XYZ的坐标值.
float xValue;
float yValue;
float zValue;
};
extern "C" __declspec(dllimport) void getPointCloud(PointVec3f *points, int pointNum);

C#定义
public struct PointVec3f
{
[MarshalAs(UnmanagedType.R4)]
public float xValue;
[MarshalAs(UnmanagedType.R4)]
public float yValue;
[MarshalAs(UnmanagedType.R4)]
public float zValue;
};
PointVec3f[] points =new PointVec3f[NUM]; //points结构体数组的值我已经获取到了,想请问怎么传指针到PointVec3f *points中!Ref的方法试过了,不行!有没有其他方法,急!!
要求:1.写出C#引用接口函数的定义。
2.写出points传值给getPointCloud(PointVec3f *points, int pointNum)的过程。
可以的有分加哦!!
展开
 我来答
tattackor
推荐于2016-04-20 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:893万
展开全部
调用方法:
1、添加引用
右击项目-添加引用-浏览 找到本地的dll文件
2、using 该dll文件里面代码的名称空间
然后就可以调用dll文件里面的类(test)和方法(add)了
例如:
using aa.test
namespace conslole1
{
class Program
{
static void Main(string[] args)
{
Test test1=new Test();
test1.add(1, 2);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bambuz
推荐于2016-09-19 · TA获得超过168个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:316万
展开全部
定义接口
[DllImport("dll文件名", CallingConvention = CallingConvention.Cdecl)]
public static extern void getPointCloud(ref PointVec3f points, int pointNum);

直接调用:
PointVec3f points;
getPointCloud( ref points, num);
追问
这是C#调用C++接口,这样行不通的,试了REF传值不行,值不能传送到DLL中的函数中!只能用指针!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-30
展开全部
unsafe代码块 就可以使用取地址符号&了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式