2015-05-05 1 views
0

Их проблема связана с компоновщиком для C++ в Visual Studio 2013 в Windows 8. Я хочу использовать openCV 3.0 с моими Visual Studios. Все ссылки внутри кода будут использоваться в обычном режиме, а IntelliSense распознает данные. Но если я хочу, чтобы скомпилировать программку Визуальных Studios дают мне следующие ошибки:Visual Studios 2013 - ошибка C++ Linker с openCV 3.0 Libs

Fehler 1 ошибку LNK2019: Verweis ауфы NICHT aufgelöstes externes Символ «» частное: символ * __thiscall резюме :: строка :: выделить (беззнаковое целое) "(? 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 auf nicht aufgelöstes externes Символ "" private: void __thiscall cv :: String :: deallocate (void) "(? deallocate @ String @ cv @@ AAEXXZ)" in 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 auf nicht aufgelöstes externes Symbol "" public: __thiscall cv :: CommandLineParser :: CommandLineParser (int , char const * const * const, class cv :: String const &) "(?? 0CommandLineParser @ cv @@ QAE @ HQBQBDABVString @ 1 @@ Z)" в функции "_main". C: \ Users \ Marc \ Documents \ Workspaces \ C++ _ VS \ OpenCV_Test \ OpenCV_Test \ main.obj OpenCV_Test Ошибка Fehler 4 LNK2019: Verweis auf nicht aufgelöstes externes Symbol "" 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 auf nicht aufgelöstes externes Символ «" protected: void __thiscall cv :: CommandLineParser :: getByName (class cv :: String const &, bool, int, void *) const "(? getByName @ CommandLineParser @ cv @@ IBEXABVString @ 2 @ _NHPAX @ Z)" in Funktion "" public: class cv :: String __thiscall cv :: CommandLineParser :: get (класс cv :: String const &, bool) const "(?? $ get @ VString @ cv @@@ 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: 5 nicht aufgelöste Externe C: \ 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

Есть ли более 2 библиотек в 'C: \ opencv \ build \ x64 \ vc12 \ lib'? – drescherjm

+0

Я мог бы использовать папку _staticlib_ в openCV и добавить туда все библиотеки в _Additional Dependencies_. Я еще не тестировал его. Но в чем разница между обычной ** lib ** и ** staticlib ** папкой из opencv? – Steno

+0

Я думаю, что в этом случае проблема связывания будет по существу одинаковой для статического opencv или dll. Поскольку с dll вам все равно нужно ссылаться на библиотеки импорта. – drescherjm

ответ

0

При установке OpenCV 3 с Visual Studio 2013 и CMake, вы найдете DLLs в

\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; 
} 

в результате

enter image description here

+0

У меня нет папки '\ opencv \ msvc \ bin \ Release'. Поэтому я думаю, что мне нужно создать его через cmake, но я не знаю, как и где. – Steno

+0

*** Поэтому я думаю, что мне нужно создать его через cmake, но я не знаю, как и где. *** Это было, если вы создали opencv из исходного кода с помощью CMake и установили из целевой установки INSTALL в '\ opencv \ msvc ' – drescherjm

+0

Я не устанавливаю openCV. Я только извлек файлы, как в руководстве, которое я связал. Поэтому я также никогда не использовал cmake в файлах openCV. – Steno

0

Испытав очень похожие сообщения об ошибках компиляции, чем показано в исходном посте, я последовал подробные ссылки выше (установите OpenCV 3.0 в Windows 8, создайте проект Visual Studio (2013) с помощью openCV).

Это не решило ошибки компиляции.

Что сработало для меня было изменить переменную среды OPENCV_DIR, чтобы указать на сборку x86 openCV вместо сборки x64.

-1

Если вы скомпилировали opencv в среде x64, я настоятельно рекомендую вам изменить платформу x64 в Configuration Manager (Visual Studio). Я исправил такую ​​же проблему, как это. enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^