【发布时间】:2012-11-09 16:44:28
【问题描述】:
我开发了一个使用 OpenCV 的 c++ 程序。现在我想用 C# 开发一个基于 Windows 窗体的应用程序。 由于 C# 只能处理托管代码,因此几乎不可能直接在 C# 应用程序上运行 OpenCV。我已经搜索了使用 OpenCV 创建 C# 应用程序的不同方法,其中一种是 EmguCV,而我更感兴趣的另一种方法是在 C# 应用程序中导入 c++ .dll 文件并以这种方式调用非托管函数。
我首先在 c++ 中创建简单的函数,然后通过导入 dll 在我的 C# 应用程序中使用 cout 和 cin。当我尝试在我的 C++ 应用程序中包含 OpenCV 头文件并且当我编译时出现此错误时,问题就出现了
错误 LNK1104:无法打开文件 'tbb_debug.lib'
以前有人做过,但我不知道他是如何将 c++ 与 C# 接口的 Displaying webcam feed in cv::Mat format in a picturebox
问题是我有一个函数,它接受一个 cv::Mat 变量并对其执行一些图像处理并返回处理后的矩阵。我想在我的 C# 应用程序中使用用 C++ 编写的函数。但问题是当我在 C++ 中包含 OpenCV 库时,我无法创建 dll。
所以请不要建议我使用 EmguCV 或任何其他 .NET 包装器 对于 OpenCV。
我正在为我的项目使用 Visual Studio 2010。
【问题讨论】:
-
问题是什么?您已经提到,您可以创建一个 DLL 并通过 P/Invoke 访问它。您还可以使用 C++/CLI 编写程序集,该程序集访问本机头文件并使用本机库。至于链接错误,您没有提供足够的信息让我们告诉您,出了什么问题。
-
我已经编辑了帖子,当我尝试编写任何使用 OpenCV 的方法时,我收到了我在上面发布的错误,因此无法创建 dll,但是当我只使用 cout 和 cin 时没有错误出现起来,dll创建成功