Visual Studios 2013 - 使用openCV 3.0 Libs的C ++链接器错误

时间:2015-05-05 22:00:47

标签: c++ opencv visual-studio-2013 linker opencv3.0

在Windows 8的Visual Studio 2013中,它们是Linker for C ++的一个问题。我想在我的Visual Studio中使用openCV 3.0。代码中的所有链接都将正常使用,IntelliSense可识别数据成员。但是,如果我想编译程序,Visual Studios会给我以下错误:

  

Fehler 1错误LNK2019:Verweis aufnichtaufgelöstesexternes符号“”private:char * __thiscall cv :: String :: allocate(unsigned int)“(?allocate @ String @ cv @@ AAEPADI @ Z)”in Funktion“ “public:__ thiscall cv :: String :: String(char const *)”(?? 0String @ cv @@ QAE @ PBD @ Z)“。 C:\ Users \ Marc \ Documents \ Workspaces \ C ++ _ VS \ OpenCV_Test \ OpenCV_Test \ main.obj OpenCV_Test   Fehler 2错误LNK2019:Verweis aufnichtaufgelöstesexternes符号“”private:void __thiscall cv :: String :: deallocate(void)“(?deallocate @ String @ cv @@ AAEXXZ)”在Funktion中“”public:__thiscall cv :: String :: ~String(void)“(?? 1String @ cv @@ QAE @ XZ)”。 C:\ Users \ Marc \ Documents \ Workspaces \ C ++ _ VS \ OpenCV_Test \ OpenCV_Test \ main.obj OpenCV_Test   Fehler 3错误LNK2019:Verweis aufnichtaufgelöstesexternes符号“”public:__ thiscall cv :: CommandLineParser :: CommandLineParser(int,char const * const * const,class cv :: String const&)“(?? 0CommandLineParser @ cv @ @ QAE @ HQBQBDABVString @ 1 @@ Z)“在Funktion中”_main“。 C:\ Users \ Marc \ Documents \ Workspaces \ C ++ _ VS \ OpenCV_Test \ OpenCV_Test \ main.obj OpenCV_Test   Fehler 4错误LNK2019:Verweis aufnichtaufgelöstesexternes符号“”public:__ thiscall cv :: CommandLineParser :: ~CommandLineParser(void)“(?? 1CommandLineParser @ cv @@ QAE @ XZ)”在Funktion“_main”。 C:\ Users \ Marc \ Documents \ Workspaces \ C ++ _ VS \ OpenCV_Test \ OpenCV_Test \ main.obj OpenCV_Test   Fehler 5错误LNK2019:Verweis aufnichtaufgelöstesexternes符号“”protected:void __thiscall cv :: CommandLineParser :: getByName(class cv :: String const&,bool,int,void *)const“(?getByName @ CommandLineParser @ cv @@ IBEXABVString @ 2 @ _NHPAX @ Z)“在Funktion中”“public:class cv :: String __thiscall cv :: CommandLineParser :: get(class cv :: String const&,bool)const”(?? $ get @ VString @简历@@@ CommandLineParser @ CV @@ QBE?AVString @ 1 @ ABV21 @ _N @ Z)”。 C:\ Users \ Marc \ Documents \ Workspaces \ C ++ _ VS \ OpenCV_Test \ OpenCV_Test \ main.obj OpenCV_Test   Fehler 6错误LNK1120:5nichtaufgelösteExterneC:\ Users \ Marc \ Documents \ Workspaces \ C ++ _ VS \ OpenCV_Test \ Debug \ OpenCV_Test.exe 1 1 OpenCV_Test

我使用以下指南安装了openCV:http://www.minlabz.com/how-to-install-opencv-3-0-0-on-windows-7-and-configure-with-visual-studio-2014/

以下是我用来测试openCV依赖项是否有效的小代码:

#include "opencv2\highgui\highgui.hpp"
#include "opencv2\core\core.hpp"
#include <stdio.h>

using namespace cv;

int main(int argc, const char** argv)
{
    const char* keyMap;
    //Standard image that will be used if dont exist arguments
    keyMap = "{path     |   |  }";

    //Reading the Callingarguments
    CommandLineParser parser(argc, argv, keyMap);
    String filename = parser.get<String>("path");
}

我希望我不会忘记一些简单的事情。

4 个答案:

答案 0 :(得分:0)

当您使用visual studio 2013和cmake安装OpenCV 3时,您将在

中找到dll。 对于发布模式

\opencv\msvc\bin\Releaseinclude中的\opencv\build\include,因此调用命令提示符并键入

cl /EHsc main.cpp /Fetest.exe /I D:\CPP_Libraries\opencv_3.0.0\build\include /link /LIBPATH:D:\CPP_Libraries\opencv_3.0.0\msvc\lib\Release opencv_core300.lib

使用此示例

#include <iostream>
#include <opencv2/core/core.hpp>



int main( int argc, char** argv )
{

    std::cout << "\n%%( Random Generator )%%\n"; 
    cv::Mat G = cv::Mat::ones(4,4, CV_64FC1);
    cv::Mat m = cv::Mat::zeros(1,1, CV_64FC1);
    cv::Mat s = cv::Mat::ones(1,1, CV_64FC1);
    std::cout << G << std::endl;
    cv::randn(G, m, s);
    std::cout << G << std::endl;

    return 0;
}

结果是

enter image description here

答案 1 :(得分:0)

现在解决了这个问题。

我重新提取opencv并按照以下两个链接的步骤进行操作:

Install OpenCV 3.0 on Windows 8

Create an Visual Studio (2013) Project with openCV

答案 2 :(得分:0)

遇到了与原帖中显示的非常相似的编译错误消息,我按照上面的完整链接(在Windows 8上安装OpenCV 3.0,使用openCV创建Visual Studio(2013)项目)。

但这并没有解决编译错误。

对我来说有用的是将OPENCV_DIR环境变量更改为指向openCV的x86版本而不是x64版本。

答案 3 :(得分:-1)

如果您在x64环境中编译过opencv,我强烈建议您在Configuration Manager(Visual Studio)中更改x64平台。我修复了这样的问题。enter image description here