在C++中使用opencv创建动态库
本文关键字:创建 动态 opencv C++ | 更新日期: 2023-09-27 18:12:18
我在里面用Opencv构建了一个项目,然后在C#中使用它。
但我不能把我的项目打包,包括opencv-libs到动态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 "";
}
您必须使用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::字符串,那么你必须使用一个整理器,请参阅这个
使用std::string 的PInvoke自定义封送器