【问题标题】:OpenCV 3.0.0 with cmake - where are the includes/libraries带有 cmake 的 OpenCV 3.0.0 - 包含/库在哪里
【发布时间】:2015-11-09 08:18:21
【问题描述】:

我使用 Cmake 编译了带有 TBB 的 OpenCV 3.0.0,现在我不确定包含和库目录在哪里(对于 VS 2012)。我遵循了these 的说明,但是该库不在“设置环境路径”简介中提到的文件夹中(可能是从早期版本中复制的)。

  1. 我是否正确假设相关文件夹是“OpenCV/Build”并且“OpenCV/Source”不再对新项目起作用?

  2. “OpenCV/Build/Install/include”和“OpenCV/Build/Install/x86/lib/vc11/lib”中是否分别需要包含和库?我添加了这些以及相应的附加依赖项 - 我的程序

#include "opencv2/opencv.hpp"

int main( int argc, char** argv )
{
cv::Mat src = cv::imread( "C:\\pics\\test.tif",0);
cv::imshow("end",src);
    return 0;
}

编译,但崩溃说:

程序无法启动,因为您的文件中缺少 opencv_core300.dll 计算机。尝试重新安装程序以解决此问题。

可能是什么原因?

【问题讨论】:

  • 1) 和 2) 是对的。将所需的dll复制到exe所在的同一文件夹中。
  • 我想制作像 Arijit 提到的属性表。我有 OpenCV 2.4.8 运行,做同样的事情没有问题,我只是想让升级和 TBB 也能正常工作!
  • 那么你的 2) 将是 ... /staticlib (不是 lib)。我希望能记住,我现在不在电脑上
  • 这并没有改变错误,在以前的版本中它也可以在没有 staticlib 的情况下工作。我尝试将 core.dll 复制到 .exe 文件夹,我得到“过程入口点”?default_num_threads@task_scheduler_init@tbb@@SAHXZ“无法位于动态链接库“tbb.dll”中。”
  • 以前的版本不同。您可能还需要重建取消设置的 BUILD_SHARED_LIBRARY

标签: c++ opencv visual-studio-2012


【解决方案1】:

然后您需要指定链接器应该查看的库。为此,请转到 Linker ‣ Input 并在“Additional Dependencies”条目下添加您要使用的所有模块的名称:

在此处添加调试库名称。像这样。 库名称如下:

opencv_(模块名称)(你使用的库的版本号)d.lib 最新版本的完整列表将包含:

opencv_calib3d300d.lib

opencv_contrib300d.lib

opencv_core300d.lib

opencv_features2d300d.lib

opencv_flann300d.lib

opencv_gpu300d.lib

opencv_highgui300d.lib

opencv_imgproc300d.lib

opencv_legacy300d.lib

opencv_ml300d.lib

opencv_nonfree300d.lib

opencv_objdetect300d.lib

opencv_ocl300d.lib

opencv_photo300d.lib

opencv_stitching300d.lib

opencv_superres300d.lib

opencv_ts300d.lib

opencv_video300d.lib

opencv_videostab300d.lib

末尾的字母 d 只是表示这些是调试所需的库。现在单击“确定”保存并对“发布规则”部分中的新属性执行相同操作。确保省略库名称中的 d 字母,并使用其上方的保存图标保存属性表。

还有发行版。 您可以在项目目录中找到您的属性表。在这一点上,将它们备份到某个特殊目录中是一个明智的决定,以便在将来创建 OpenCV 项目时始终将它们放在手边。请注意,对于 Visual Studio 2010,文件扩展名是 props,而对于 2008,这是 vsprops。

还有发行版。 下次创建新的 OpenCV 项目时,只需使用属性管理器中的“添加现有属性表...”菜单项即可轻松添加 OpenCV 构建规则。

Check this Official Instruction

【讨论】:

  • 那是静态链接。 OP 正在动态链接。
  • 这就是我所做的(我的意思是“对应的附加依赖项”)。
  • 对不起,我没有足够的代表发表评论,这就是为什么我必须将其发布为答案。您的路径是否包含您拥有 dll 的文件夹??
  • 是的。但是我重新启动了计算机,现在 opencv_core.dll 问题似乎已经消失了,所以可能就是这样。但是关于“tbb.dll”的程序入口点问题仍然存在。
  • 那是因为您指向的默认构建不附带 tbb.dll
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
相关资源
最近更新 更多