与OpenCV 3.0连接时出现“无法parsing的外部符号”错误

我从源代码构buildOpenCV 3.0。 和一些额外的模块contrib回购。 而我手动设置我的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社区版本中,它给了我这些错误:

在这里输入图像描述

我看到类似的线程 ,他们说这是由x86 / x64问题引起的。 但是我的项目已经是x86了。 而我build立的OpenCV也是针对x86(见下文)。 这是什么原因?

在这里输入图像描述

ADD 1

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

所以它确实是一个x86

在这里输入图像描述

我的libpathconfiguration为上面的path:

在这里输入图像描述

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

在这里输入图像描述

下面是我的VC项目的Configuration Manager

在这里输入图像描述

所以它确实也是x86

哪里可能出错?

ADD 2

我手动searchfastFree()函数。 它在opencv_core300d.lib文件中定义。 我使用dumpbin /symbols命令来检查符号。 而且我发现它的名字正像fastFree@cv@@YAXPAX@Z一样被fastFree@cv@@YAXPAX@Z 。 那为什么不能find?

在这里,使用带有预编译库的OpenCV 3.0.0,在Windows(用Windows 8.1testing)和Visual Studio(用Visual Studio 2013testing)中静态链接OpenCV的C ++项目运行此程序的步骤如下:

 #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. 让我们调用OPENCV_DIR,其中包含:
    • build立
    • 资源
  4. 创build一个空的项目:
    • 新build项目 – > Visual C ++ – >空项目
  5. 添加一个包含主函数的cpp文件(比如说Start.cpp)(例如上面的代码片段)
  6. configurationDEBUG
  7. 添加include和lib目录:
    • configuration属性 – > VC ++目录
    • 包括目录:添加OPENCV_DIR \ build \ include
    • 库目录:添加OPENCV_DIR \ build \ x86 \ vc12 \ staticlib
  8. 添加所需的库(以下对于这个简单的例子很好,如果你需要其他的function,你应该添加更多的库):

    • 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)
  9. configuration属性 – > C / C ++ – >代码生成 – >运行时库

    • 设置为multithreadingdebugging(/ MTd)
  10. 对于RELEASE构build,您需要在释放模式下执行从6到9的步骤,在步骤8中添加没有尾随“d”的库,并在步骤9中添加multithreading(/ MT)。

  11. 请享用!

作为奖励,我还build议为Visual Studio安装Image Watch扩展。 非常非常有用的debugging你的Mat

显然你链接不匹配的库。 根据您的设置,可以通过“ Project Properties -> Configuration Manager ”将项目更改为64位,或将您的libpath更改为指向x86库。 (顺便说一句,因为我是一个新用户,我不能发表评论,所以我必须写在这里作为答案)