在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 "";
}

在C++中使用opencv创建动态库

您必须使用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自定义封送器