当前位置:编程学习 > C#/ASP.NET >>

C#调用C++编写的dll指针的应用

C#调用一个dll,需要用到结构体指针。
如下  [DllImport("SLDWDTC.dll")]
    public unsafe static extern void getCameraMat(cameraPara leftCameraPara, cameraPara rightCameraPara, MCvMat* left_intrinsic_matrix, MCvMat* left_distortion_coeffs, MCvMat* right_intrinsic_matrix, MCvMat* right_distortion_coeffs);

用现在的调用可以生成一个IntPtr 
        IntPtr sp = Emgu.CV.CvInvoke.cvCreateMat(4, 1, Emgu.CV.CvEnum.MAT_DEPTH.CV_32F);
        MCvMat* left_distortion_coeffs = Emgu.CV.CvInvoke.cvCreateMat(4, 1, Emgu.CV.CvEnum.MAT_DEPTH.CV_32F);


怎样把IntPtr 转换成结构体MCvMat的指针进而调用getCameraMat方法? --------------------编程问答-------------------- cvCreateMat 这个方法本身在 C# 这里处理的时候就应该定义成 返回 MCvMat 对象。然后 MCvMat struct / class 中字段变量的定义应该和 C++ 里面数据类型相吻合。

Emgu CV ...... 你在玩 C# 游戏编程?Emgu CV 应该有自己的文档的吧。 --------------------编程问答--------------------
引用 1 楼 youzelin 的回复:
cvCreateMat 这个方法本身在 C# 这里处理的时候就应该定义成 返回 MCvMat 对象。然后 MCvMat struct / class 中字段变量的定义应该和 C++ 里面数据类型相吻合。

Emgu CV ...... 你在玩 C# 游戏编程?Emgu CV 应该有自己的文档的吧。


是Emgu CV 我调用这个是因为dll的C++使用的是open cv。不是游戏编程,是图像处理算法。Emgu CV的cvCreateMat 方法生成的就是IntPtr  不知道怎么转成open cv的指针了。 --------------------编程问答-------------------- LZ 的意思是  把得到的IntPtr转为自己的结构体么?还是? --------------------编程问答-------------------- 是的。那个结构体是Emgu CV 定义的 --------------------编程问答-------------------- 以前没有做过类似的调用,不知道怎么转成指针,我是用wpf做的界面。 --------------------编程问答-------------------- C# 中的 IntPtr 转成 struct 结构体
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,