Как заставить Visual Studio скомпилировать мое приложение с поддержкой OpenCV? - PullRequest
0 голосов
/ 11 декабря 2018

Мне нужно скомпилировать и запустить программу Windows, которая использует OpenCV.Для этого я скачал и установил MS Visual Studio 2010.Я подтвердил, что могу скомпилировать и запустить терминальное приложение Hello World.

Теперь я установил OpenCV и настроил пути компилятора и компоновщика соответственно.Я написал небольшой пример приложения:

#include "stdafx.h"
#include<opencv2/opencv.hpp>
#include<iostream>

using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
    Mat img = imread("7MLS142.jpg");
    namedWindow("image", WINDOW_NORMAL);
    imshow("image", img);
    waitKey(0);
    return 0;
}

, но я получаю следующие ошибки, когда я хочу скомпилировать и запустить его:

1>------ Build started: Project: Hello_World, Configuration: Debug Win32 ------
1>Build started 2018-12-11 11:42:00 AM.
1>InitializeBuildStatus:
1>  Touching "Debug\Hello_World.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>  Hello_World.cpp
1>ManifestResourceCompile:
1>  All outputs are up-to-date.
1>Hello_World.obj : error LNK2019: unresolved external symbol "int __cdecl cv::waitKey(int)" (?waitKey@cv@@YAHH@Z) referenced in function _wmain
1>Hello_World.obj : error LNK2019: unresolved external symbol "void __cdecl cv::imshow(class cv::String const &,class cv::debug_build_guard::_InputArray const &)" (?imshow@cv@@YAXABVString@1@ABV_InputArray@debug_build_guard@1@@Z) referenced in function _wmain
1>Hello_World.obj : error LNK2019: unresolved external symbol "void __cdecl cv::namedWindow(class cv::String const &,int)" (?namedWindow@cv@@YAXABVString@1@H@Z) referenced in function _wmain
1>Hello_World.obj : error LNK2019: unresolved external symbol "class cv::Mat __cdecl cv::imread(class cv::String const &,int)" (?imread@cv@@YA?AVMat@1@ABVString@1@H@Z) referenced in function _wmain
1>Hello_World.obj : error LNK2019: unresolved external symbol "private: char * __thiscall cv::String::allocate(unsigned int)" (?allocate@String@cv@@AAEPADI@Z) referenced in function "public: __thiscall cv::String::String(char const *)" (??0String@cv@@QAE@PBD@Z)
1>Hello_World.obj : error LNK2019: unresolved external symbol "private: void __thiscall cv::String::deallocate(void)" (?deallocate@String@cv@@AAEXXZ) referenced in function "public: __thiscall cv::String::~String(void)" (??1String@cv@@QAE@XZ)
1>Hello_World.obj : error LNK2019: unresolved external symbol "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z) referenced in function "public: __thiscall cv::Mat::~Mat(void)" (??1Mat@cv@@QAE@XZ)
1>Hello_World.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ) referenced in function "public: void __thiscall cv::Mat::release(void)" (?release@Mat@cv@@QAEXXZ)
1>c:\users\rideo\src\visual studio 2010\Projects\Hello_World\Debug\Hello_World.exe : fatal error LNK1120: 8 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:03.46

Additional library path в настройке Linkerустановить %OPENCV_DIR%\bin, где я установил каталог setx -m OPENCV_DIR C:\Users\rideo\opencv\build\x64\vc14 (есть vc14 & vc15), и я установил Visual Studio 2010 - это то, что вызывает проблему здесь?

ОБНОВЛЕНИЕ

Я установил MS Visual Studio Professional 2015, установил C: \ Users \ rideo \ opencv \ build \ x64 \ vc15`, открыл тот же проект, но все равно получаю:

1>------ Rebuild All started: Project: Hello_World, Configuration: Debug Win32 ------
1>Build started 2018-12-11 2:09:41 PM.
1>     1>
1>_PrepareForClean:
1>         Deleting file "Debug\Hello_World.tlog\Hello_World.lastbuildstate".
1>       InitializeBuildStatus:
1>         Touching "Debug\Hello_World.tlog\unsuccessfulbuild".
1>       ClCompile:
1>         stdafx.cpp
1>         Hello_World.cpp
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z) referenced in function "public: __thiscall cv::Mat::~Mat(void)" (??1Mat@cv@@QAE@XZ)
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "private: char * __thiscall cv::String::allocate(unsigned int)" (?allocate@String@cv@@AAEPADI@Z) referenced in function "public: __thiscall cv::String::String(char const *)" (??0String@cv@@QAE@PBD@Z)
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "private: void __thiscall cv::String::deallocate(void)" (?deallocate@String@cv@@AAEXXZ) referenced in function "public: __thiscall cv::String::~String(void)" (??1String@cv@@QAE@XZ)
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ) referenced in function "public: void __thiscall cv::Mat::release(void)" (?release@Mat@cv@@QAEXXZ)
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "class cv::Mat __cdecl cv::imread(class cv::String const &,int)" (?imread@cv@@YA?AVMat@1@ABVString@1@H@Z) referenced in function _wmain
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "void __cdecl cv::namedWindow(class cv::String const &,int)" (?namedWindow@cv@@YAXABVString@1@H@Z) referenced in function _wmain
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "int __cdecl cv::waitKey(int)" (?waitKey@cv@@YAHH@Z) referenced in function _wmain
1>     1>
1>Hello_World.obj : error LNK2019: unresolved external symbol "void __cdecl cv::imshow(class cv::String const &,class cv::debug_build_guard::_InputArray const &)" (?imshow@cv@@YAXABVString@1@ABV_InputArray@debug_build_guard@1@@Z) referenced in function _wmain
1>     1>
1>C:\Users\rideo\src\visual studio 2010\Projects\Hello_World\Debug\Hello_World.exe : fatal error LNK1120: 8 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.92
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Это с opencv-3.4.3-vc14_vc15.exe

1 Ответ

0 голосов
/ 11 декабря 2018

vc14 для сборок, использующих Visual studio 2015.

Но вы установили Visual studio 2010

Для VS2010 переменная среды должна быть установлена ​​с помощью (зависит от 32-битной или64 бита)

setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc10     (suggested for Visual Studio 2010 - 32 bit Windows)
setx -m OPENCV_DIR D:\OpenCV\Build\x64\vc10     (suggested for Visual Studio 2010 - 64 bit Windows)

Вот дополнительные рекомендации по использованию статических или динамических библиотек:

https://docs.opencv.org/2.4/doc/tutorials/introduction/windows_install/windows_install.html#windowssetpathandenviromentvariable

А вот подробное руководство со скриншотами, касающееся всехнеобходимые настройки проекта, необходимые для использования OpenCV в проектах Visual Studio 2015 C ++.

https://www.opencv -srf.com / 2017/11 / install-opencv-with-visual-studio.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...