在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");
}
我希望我不会忘记一些简单的事情。
答案 0 :(得分:0)
当您使用visual studio 2013和cmake安装OpenCV 3时,您将在
中找到dll。 对于发布模式 \opencv\msvc\bin\Release
和include
中的\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;
}
结果是
答案 1 :(得分:0)
答案 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