我已经用Opencv构建了一个Project,然后在C#中使用它。
但我不能打包我的项目包括opencv库到动态DLL然后在C#中调用它。
有人可以给我一些提示吗? :(
我的代码:
#include "opencv\cv.h"
#include "opencv\highgui.h"
using namespace cv;
extern "C" _declspec(dllexport) string OpenCVTest(string fileName)
{
Mat img = imread(fileName);
IplImage image = img;
cvShowImage("Hello world", &image);
cvWaitKey(0);
cvDestroyAllWindows();
return "";
}
答案 0 :(得分:0)
您必须使用Pinvoke技术,它允许您从c#代码调用c ++函数。
如果您有用c ++编写的这样的函数
extern "C" {
MYAPI void print_line(const char* str);
}
您可以在c#
中为其定义原型[DllImport("NativeLib.dll")]
private static extern void print_line(string str);
然后你可以在c#中使用它作为普通函数
如果你想从c#传递std :: string那么你必须使用marshaller,请参考这个