ошибка LNK2019: неразрешенный внешний символ _ Программа Open CV

Я изучаю открытое резюме и пробовал несколько программ. Имею в виду эту ссылку. http://docs.opencv.org/modules/contrib/doc/facerec/tutorial/facerec_gender_classification.html

Я использую Visual Studio 10, чтобы запустить то же самое, и я думаю, что где-то я испортил некоторую конфигурацию. Я столкнулся с той же проблемой еще в паре программ (выбранных из того же источника),

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

1> main.obj: ошибка LNK2019: неразрешенный внешний символ "int __cdecl cv :: waitKey (int)" (? WaitKey @ cv @@ YAHH @ Z), указанный в функции __catch $ _main $ 0

1> main.obj: ошибка LNK2019: неразрешенный внешний символ "class cv :: Mat __cdecl cv :: subspaceReconstruct (class cv :: _ InputArray const &, class cv :: _ InputArray const &, class cv :: _ InputArray const &)" ( ? subspaceReconstruct @ cv @@ YA? AVMat @ 1 @ ABV_InputArray @ 1 @ 00 @ Z), на который ссылается функция __catch $ _main $ 0

..... (еще такая неразрешенная ошибка внешнего символа)

1> main.obj: ошибка LNK2001: неразрешенный внешний символ "public: virtual bool __thiscall cv :: _ InputArray :: empty (void) const" (? Empty @ _InputArray @ cv @@ UBE_NXZ)

1> c: \ users \ isenses \ documents \ visual studio 2010 \ Projects \ gender_classification \ Debug \ gender_classification.exe: фатальная ошибка LNK1120: 37 неразрешенных внешних элементов

1>

1> Сборка завершилась неудачно.

1> Истекшее время 00: 00: 00.36

========== Сборка: 0 успешных, 1 неудачных, 0 актуальных, 0 пропущенных ==========

Мои свойства проекта следующие: -

Свойства-> Свойства конфигурации -> Отладка-> аргументы команды-> C: \ Users \ isenses \ Documents \ Visual Studio 2010 \ Projects \ gender_classification \ csv.txt

Свойства -> Свойства конфигурации -> Каталоги VC ++ -> Включить каталоги -> (добавлено C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ lib и
C: \ openCV_2.4 \ opencv \ build \ x86 \ vc10 \ lib)

C / C ++ -> общие-> дополнительные подключаемые каталоги (добавлен путь к openCV, то есть: - C: \ openCV_2.4 \ opencv \ build

Linker-> General --- Включить добавочное связывание = нет

Дополнительные каталоги библиотеки = C: \ Program Files% 28x86% 29 \ Microsoft Visual Studio 10.0 \ VC \ lib

C: \ openCV_2.4 \ opencv \ сборка \ x86 \ vc10

компоновщик-> Система --- Подсистема = / ПОДСИСТЕМА: КОНСОЛЬ

Linker-> Input --- дополнительные зависимости = wsock32.lib opencv_contrib2411d.lib

opencv_calib3d2411d.lib

opencv_ml2411d.lib

opencv_objdetect2411d.lib

Спасибо.


person Mayank    schedule 05.08.2015    source источник
comment
Я почти уверен, что правильно настроил все конфигурации, возможно, это не так! Показать каталоги Include и Libraries из свойств вашего проекта.   -  person Miki    schedule 05.08.2015
comment
@Miki Ну, я пропустил раздел ввода в компоновщике. Я добавляю дополнительные зависимости. Но все же я получаю сообщение об ошибке ---   -  person Mayank    schedule 05.08.2015
comment
Так что теперь он работает?   -  person Miki    schedule 05.08.2015
comment
1 ›ССЫЛКА: фатальная ошибка LNK1181: невозможно открыть входной файл opencv_contrib2411d.lib   -  person Mayank    schedule 05.08.2015
comment
Вы добавили его в Linker - ›Input?   -  person Miki    schedule 05.08.2015
comment
Взгляните здесь   -  person Miki    schedule 05.08.2015
comment
Были установлены переменные пути, но я пропустил настройку статических библиотек. Но я выполнил инструкции, и все идет по правильному пути. У меня было одно сомнение, которое, я думаю, могло быть причиной. Ну, у меня есть win64bit, но Visual Studio установлена ​​в папке prog..x86, и все пути связывания, которые m определяют, имеют 64-битный формат. Надеюсь, это правда?   -  person Mayank    schedule 05.08.2015
comment
ССЫЛКА: фатальная ошибка LNK1181: не удается открыть входной файл opencv_contrib2411d.lib. Хотя при проверке каталога вручную я могу найти все файлы библиотеки m, вызывающие.   -  person Mayank    schedule 05.08.2015
comment
какой у вас каталог библиотеки?   -  person Miki    schedule 05.08.2015
comment
C: \ openCV_2.4 \ opencv \ build \ x86 \ vc10 \ lib ------ путь к моей библиотеке. ну, я все еще на той же ошибке, что и выше, но теперь 33 неразрешенных внешних фактора.   -  person Mayank    schedule 05.08.2015
comment
Ваш проект (не ваш SO) 32- или 64-битный? Вы связываетесь с 32-битными библиотеками (x86)   -  person Miki    schedule 05.08.2015
comment
Я только что видел ваше обновление ... ну, вам также нужно связать opencv_coreXXX, opencv_highguiXXX, opencv_imgprocXXX и т.д ... (с завершающим d, если в отладке) в вашем компоновщике- ›Input --- дополнительные зависимости   -  person Miki    schedule 05.08.2015
comment
да, связавшись с x86 (32 бита), я понял это.   -  person Mayank    schedule 05.08.2015
comment
эй ... спасибо. Это сработало. теперь m при ошибке приложение не смогло запуститься правильно (0xc000007b), что является ошибкой приложения. Проблемы с разрядной версией ОС. работаю над этим. отвечу, как только я его запустил. Между тем, вы также можете рассказать мне, как вы рассчитали необходимые библиотеки (для самообучения). еще раз спасибо Мики :-)   -  person Mayank    schedule 05.08.2015
comment
потому что Mat находится в opencv_core, imread находится в opencv_highgui и т.д ... в общем всегда нужны core, imgproc и highgui.   -  person Miki    schedule 05.08.2015


Ответы (2)


Благодаря @miki мне удалось успешно создать файл. Решение моей проблемы было: -

  1. добавление соответствующих дополнительных зависимостей в свойствах-> компоновщик-> ввод.
  2. Добавление пути к библиотекам в переменных среды Windows.
  3. Я не использовал надлежащие дополнительные зависимости, как указано @miki и как он цитирует «ну, вам также нужно связать opencv_coreXXX, opencv_highguiXXX, opencv_imgprocXXX и т. Д. (С завершающим« d », если в отладке) в вашем Linker-> Input- - дополнительные зависимости »

Еще раз спасибо

person Mayank    schedule 10.08.2015
comment
Также следует иметь в виду, что если вы добавляете зависимости в Visual Studio в разделе Свойства- ›Linker-› Ввод, вы не можете просто вставить все имена * .lib как одну длинную строку. VS2019, кажется, игнорирует что-либо после разрыва строки для этого поля. Вам нужно дважды щелкнуть, чтобы открыть поле и добавить все имена файлов * d.lib в конкретный редактор поля, чтобы он действительно сохранил все соответствующие имена библиотек. Наверное, случайно моя библиотека HighGui подключалась правильно, но ничего больше, и это было потому что так случилось, что это первая запись в моем списке! - person Joe; 03.01.2021

Я хочу добавить ответ на этот вопрос, потому что считаю, что документацию на сайте opencv необходимо обновить. Я следил за инструкциями и не смог связать библиотеку. После множества перестановок я решил взглянуть на файлы .lib. Моя проблема была довольно простой. Файлы lib в учебнике opencv не завершены. В частности, мой каталог lib включает еще три файла lib. Я добавил три дополнительных файла lib в компоновщик Visual Studio, и проблема с внешним символом была решена. Я не уверен, почему это так, потому что я пытался использовать только функции, содержащиеся в основном модуле. В любом случае, надеюсь, это кому-то поможет.

Я использую opencv 3 и Visual Studio 2017.

person Paul    schedule 17.07.2017