我开发了一个使用OpenCV的c ++程序.现在我想在C#中开发一个基于Windows窗体的应用程序.由于C#只能处理托管代码,因此几乎不可能在C#应用程序上直接运行OpenCV.我已经搜索了使用OpenCV创建C#应用程序的不同方法,其中一个是EmguCV,另一个我更感兴趣的方法是在C#应用程序中导入c ++ .dll文件并以这种方式调用非托管函数.
我开始在C创建简单的功能++和我能使用cout
,并cin
在通过导入DLL我的C#应用程序.当我尝试在我的c ++应用程序中包含OpenCV头文件时,当我编译时,我遇到此错误
错误LNK1104:无法打开文件'tbb_debug.lib'
有人曾经这样做过,但是我无法弄清楚他是如何用c#在Cv :: Mat格式的网络摄像头中显示 c ++
问题是我有一个函数,它接受一个cv :: Mat变量并对其执行一些图像处理并返回处理过的矩阵.我想在我的C#应用程序中使用用c ++编写的函数.但问题是,当我在c ++中包含OpenCV库时,我无法创建dll.
所以请不要建议我使用EmguCV或OpenCV的任何其他.NET包装器.
我正在为我的项目使用Visual Studio 2010.
我将显式导出将入口点包装在 C++ 标头中的方法,然后使用 P/Invoke 引用它们:
extern "C" __declspec(dllexport) BOOL DoSomething();
Run Code Online (Sandbox Code Playgroud)
然后在 C# 中使用它们:
[DllImport("MyOpenCVWrapper.dll")]
private static extern bool DoSomething();
Run Code Online (Sandbox Code Playgroud)
我不会尝试引用 OpenCV 标头。