'未解决的外部符号'链接OpenCV 3.0时出错

时间:2015-07-21 14:27:33

标签: opencv visual-c++ opencv3.0

我从源代码构建OpenCV 3.0。还有一些额外模块的contrib repo。我手动设置我的VS2013项目以使用生成的lib文件。

我的代码现在很简单:

#include "opencv2\core\core.hpp"
#include "opencv2\imgcodecs\imgcodecs.hpp"

int _tmain(int argc, _TCHAR* argv[])
{
    cv::Mat image = cv::imread("img.jpg");
    return 0;
}

但在VS 2013社区版中,它给了我这些错误:

enter image description here

我看到similar thread,他们说这是由x86 / x64问题引起的。但我的项目已经是x86了。我构建的OpenCV也针对x86(见下文)。这是什么原因?

enter image description here

ADD 1

OpenCV 3.0 INSTALL项目生成以下lib目录:

所以它确实是x86

enter image description here

我的lib路径配置为上述路径:

enter image description here

我添加了所有*d.lib个文件。

enter image description here

以下是我的VC项目Configuration Manager

enter image description here

所以它确实是x86

可能出错?

ADD 2

我手动搜索fastFree()功能。它在opencv_core300d.lib文件中定义。我使用dumpbin /symbols命令检查符号。我发现它的名称与fastFree@cv@@YAXPAX@Z完全相同。那么为什么找不到呢?

1 个答案:

答案 0 :(得分:6)

这里是将OpenCV 3.0.0与预编译的libs一起使用的步骤,用于静态链接OpenCV的C ++项目,在Windows(使用Windows 8.1测试)和Visual Studio(使用Visual Studio 2013测试)中运行此程序:

#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
    Mat3b img = imread("path_to_image");
    imshow("img", img);
    waitKey();
    return 0;
}
  1. http://opencv.org/downloads.html
  2. 下载
  3. 提取
  4. 让我们调用OPENCV_DIR包含以下内容的目录:
    • 构建
  5. 创建一个空项目:
    • 新项目 - &gt; Visual C ++ - &gt;空项目
  6. 添加一个包含主要功能的cpp文件(例如Start.cpp)(例如上面的代码段)
  7. 配置DEBUG
  8. 添加include和lib目录:
    • 配置属性 - &gt; VC ++目录
    • 包含目录:添加OPENCV_DIR \ build \ include
    • 图书馆目录:添加OPENCV_DIR \ build \ x86 \ vc12 \ staticlib
  9. 添加必需的库(以下内容适用于此简单示例,如果需要其他功能,则应添加更多):

    • opencv_core300d.lib
    • opencv_highgui300d.lib
    • opencv_imgproc300d.lib
    • opencv_hal300d.lib
    • opencv_imgcodecs300d.lib
    • libjpegd.lib;
    • libpngd.lib
    • libjasperd.lib
    • IlmImfd.lib
    • libtiffd.lib
    • libwebpd.lib
    • zlibd.lib
    • ippicvmt.lib
    • %(AdditionalDependencies)
  10. 配置属性 - &gt; C / C ++ - &gt;代码生成 - &gt;运行时库

    • 设置为多线程调试(/ MTd)
  11. 对于RELEASE构建,您需要在发布模式下执行从6到9的步骤,添加没有尾随&#34; d&#34;在步骤8中,在步骤9中使用多线程(/ MT)。

  12. 享受!
  13. 作为奖励,我还建议为Visual Studio安装Image Watch扩展名。非常有用的调试你的Mat