openCV 2.2 createButton LNK 2019 ошибка в Visual Studio 2010 - PullRequest
3 голосов
/ 16 декабря 2010

Я пытался использовать новые функции Qt openCV 2.2 (см. http://opencv.willowgarage.com/documentation/cpp/qt_new_functions.html#index-1384) для проекта, но я получаю сообщение об ошибке:

1> main.cpp 1> main.obj: ошибка LNK2019: неразрешенный внешний символ "void __cdecl резюме :: displayStatusBar (класс станд :: basic_string, класс std :: allocator> const &, class станд :: basic_string, класс std :: allocator> const &, int) " (? DisplayStatusBar @ резюме @@ YAXABV? $ Basic_string @ DU? $ Char_traits @ D @ станд @@ V? $ Распределитель @ D @ 2 @@ станд @@ 0H @ Z) упоминается в функции _main 1> C: \ Documents and Settings \ Orange \ my документы \ визуальная студия 2010 \ Projects \ FYP \ FYP.exe: смертельный исход ошибка LNK1120: 1 неразрешенная внешность

Я использую Visual Studio 2010, Windows XP, QT 4.7.1 и OpenCV 2.2.
Я уже добавил основные lib-файлы для openCV и qt в настройках своего проекта в свойствах> Linker> Input. Я попытался скомпилировать и запустить код openCV без каких-либо проблем, кроме случаев, когда я пытался использовать новые функции Qt, такие как displayStatusBar (...) и createButton (...). Я искал решение в течение нескольких дней и до сих пор не смог найти его, возможно, потому что openCV2.2 был выпущен только недавно. Кто-нибудь пробовал и сталкивался с этой проблемой и есть решение?

Кстати, причина, по которой я хочу использовать предоставляемые openCV функции для создания простых окон и кнопок вместо qt, заключается в том, что я хочу избежать необходимости конвертировать данные типа Mat в openCV и QImage в Qt.

Заранее спасибо за любые ответы.

Прикрепленный код:

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main()
{
    namedWindow("Test", CV_WINDOW_AUTOSIZE);            
    // ...
    // Code links without problem when the following line is commented out.
    displayStatusBar("Test", "Hello World", 5000);  

    return 0;
}

1 Ответ

8 голосов
/ 23 декабря 2010

Я обнаружил проблему, поэтому думаю, что я должен опубликовать здесь ответ в интересах других, кто, возможно, столкнулся с той же проблемой.

В основном двоичные файлы, предоставляемые для OpenCv 2.2 по умолчанию, НЕ включают новые функции Qt. Чтобы включить его, нужно скачать исходный код OpenCv и использовать CMake для генерации make-файлов и исходного кода, которые включают новые функции Qt, и скомпилировать исходный код с нуля.

Вот примерно шаги, которые нужно сделать:

  1. Сначала установите QT с помощью SDK отсюда: http://qt.nokia.com/downloads/. ПРИМЕЧАНИЕ. Вам нужно будет добавить библиотеки QT libs и заголовочные файлы в системный путь и в путь компоновщика, чтобы ваш компилятор мог их найти. Это НЕ просто скачать и установить. Для окон см .: http://developer.qt.nokia.com/doc/qt-4.8/install-win.html, чтобы узнать, как добавить переменные среды. Вам нужно будет настроить их для CMake, чтобы обнаруживать QT и генерировать нужные файлы. Для пользователей Linux см .: http://blog.sudobits.com/2010/06/30/how-to-install-qt-on-ubuntu-10-04/
  2. Загрузите и установите CMake отсюда: http://cmake.org/cmake/resources/software.html.
  3. Загрузите исходный код OpenCV для вашей ОС здесь: http://opencv.willowgarage.com/wiki/
  4. Теперь запустите графический интерфейс CMake и используйте его, чтобы выбрать папку, в которой вы извлек исходный код OpenCV. Выберите тип ОС вы компиляция для т.е. Unix Makefiles, решение Visual Studio, XCode и т.д.
  5. Теперь должен появиться список опций. Там будет вариант для QT а также QT с openGL. Выберите первый и один с openGL если вам это нужно. Затем нажмите кнопку «Настройка», а затем кнопку «Создать» в CMake. Необходимые файлы проекта будут созданы.
  6. В зависимости от тип созданного вами проекта (Unix Makefiles, проект Visual Studio и т. д.), теперь вы можете перейти в папку, где они создаются CMake и скомпилируйте проект. Например, если вы выбрали CMake для генерировать решение Visual Studio, будет Visual Studio файл решения в папке. Откройте его и выберите Build All. если ты выбрал Unix Makefiles, просто вызовите «make» в командной строке, а затем «sudo make install».
  7. Теперь все, что вам нужно, это библиотеки в папке / lib и в заголовке файлы в папке / include. Скопируйте эти 2 папки туда, куда вы хочу разместить их. Например, в Ubuntu после того, как вы набрали "sudo make" установить "они были бы автоматически скопированы в / usr / local / lib и / usr / local / include. Для пользователя Windows, они будут в папка, которую вы указали в CMake.
  8. Чтобы связать ваш проект (будь то visual studio или использовать make в unix), Вы должны сказать своему компоновщику, где найти библиотеки и включить файлы. Вы указываете их так же, как и при загрузке OpenCV двоичные файлы.

Вот и все. Теперь у вас должен быть рабочий OpenCV с QT.

Инструкции по компиляции с нуля приведены на веб-странице OpenCv здесь: http://opencv.willowgarage.com/wiki/InstallGuide.

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