Как избавиться от неразрешенных ошибок внешних символов LNK2019 с помощью opencv и vs2012

Я - программист Visual Basic, пытающийся запустить и запустить Visual C ++ с некоторым исходным кодом, который, как я обнаружил, использует OpenCV. Я не очень разбираюсь в C ++. Я получаю неразрешенные ошибки внешних символов, и я часами читал все статьи, которые могу найти здесь об этом, и каждый ответ такой ... «не связывайте x86 с библиотеками x64 или наоборот» или «добавьте x ссылки на настройки-> компоновщик »или« добавьте файлы lib / dll в папку проекта, а затем добавьте их в свое решение »или« очевидно, что вы не добавляли библиотеки в свой компоновщик ».

Я уже сделал все следующее, и это не сработало ...

1) Я добавил «c: \ opencv \ build \ x64 \ vc11 \ staticlib;% (AdditionalLibraryDirectories)» в «Дополнительные каталоги библиотеки» в Project-> Preferences-> Linker-> General. Немного не помогло.

2) Вместо этого я попробовал описанное выше с каталогом x86, это немного не помогло. Так что теории о том, что это проблема x64 / x86, не являются ответом.

3) Я добавил «opencv_calib3d244d.lib; opencv_contrib244d.lib; opencv_core244d.lib; opencv_features2d244d.lib; opencv_flann244d.lib; opencv_gpu244d.lib; opencv_haartraining_engined.lib; opencv_highgui244d.lib; opencv_imgproc244d.lib; opencv_legacy244d.lib; opencv_ml244d.lib; opencv_nonfree244d .lib; opencv_objdetect244d.lib; opencv_photo244d.lib; opencv_stitching244d.lib; opencv_ts244d.lib; opencv_video244d.lib; opencv_videostab244d.lib;% (AdditionalDependencies) "для моего проекта Link-> Предпочтения для моего проекта -> . Не помогло.

4) Я попробовал описанное выше с каталогом "lib" вместо каталога "staticlib". Немного не помогло.

5) Я попытался скопировать всю отладочную версию файлов * .lib из каталога lib в папку моего проекта и Project-> Add-> Existing Item, чтобы добавить их в мой проект. Не помогло.

6) Я добавил «c: \ opencv \ build \ include;% (AdditionalIncludeDirectories)» в свой проект-> Настройки-> C / C ++ -> Общие-> Дополнительные подключаемые каталоги. Не помогло.

Похоже, что это не так. Кто-нибудь знает решение этой ошибки, которое не связано ни с одним из тех вещей, которые я уже пробовал?

Вот некоторые из ошибок, которые я получаю:

Ошибка 16, ошибка LNK2019: неразрешенный внешний символ _cvCreateImage, указанный в функции «struct _IplImage * __cdecl loadFloatImage (char const *)» (? LoadFloatImage @@ YAPAU_IplImage @@ PBD @ Z) C: \ dev \ CPP_console \ CPP_console \ FeaturesMainPain Ошибка 17 LNK2001: неразрешенный внешний символ _cvCreateImage C: \ dev \ CPP_console \ CPP_console \ TextDetection.obj Ошибка CPP_console 18 ошибка LNK2019: ссылка на неразрешенный внешний символ _cvReleaseImage в функции "struct _IplImage * __cdeclImage * __cdeclImage * __cdeclimage_floatImage" (@ charfloatImage) (@ charfloatImage) YAPAU_IplImage @@ PBD @ Z) C: \ dev \ CPP_console \ CPP_console \ FeaturesMain.obj CPP_console


person NERL    schedule 02.04.2013    source источник


Ответы (1)


Я нашел решение. VS2012 дает сбой. Я думал, что мой проект был установлен на x64, потому что, когда я щелкнул Build -> Configuration Manager -> Platform, не было другого варианта для платформы, кроме Win32 и Edit. Когда я щелкнул «Изменить», он сказал, что платформа x64, но что она скопировала настройки из «Win32». Похоже, это сбой в VS2012. Дело в том, что я НЕ редактировал текущую платформу, хотя и нажимал кнопку «изменить». Скорее, он создавал НОВУЮ платформу. Но поскольку я нажал кнопку редактирования, я подумал, что это говорит мне, что моя платформа x64, потому что это то, что она выбрала. Но нет, он создавал новую платформу ... и на самом деле не следует говорить, что проект может быть x64, но копировать настройки из Win32! В любом случае, в VS2012 есть несколько сбоев. Итак, чтобы решить мою проблему, мне пришлось щелкнуть ссылку «изменить» и сказать ей, что нужно копировать настройки из «», а не из Win32 (другой вариант - пустое поле). Это создало новую опцию платформы под названием x64 и изменило ее, чтобы показать, что моя платформа теперь x64. Кроме того, это волшебным образом заставило кнопку с названием «новый» появиться рядом с кнопкой «изменить» в раскрывающемся списке платформы, и кнопка «изменить» больше не действует как новая кнопка (она больше не дает возможность «копировать» settings from _ _ ". Но кнопка" New "по-прежнему позволяет вам создавать платформу x64, но копировать настройки из Win32, что глупо. Но по крайней мере сейчас, когда я нажимаю кнопку" Изменить ", она действительно действует немного больше похоже на кнопку редактирования. VS2012 имеет ошибку в этой области меню. В любом случае, все мои ошибки ссылки исчезли, когда я полностью изменил его на x64, поскольку я использую версию OpenCV для x64. Если кто-то еще использует x64 версия OpenCV: убедитесь, что ваша «Платформа» говорит x64, а не Win32, иначе она выдаст вам ошибки LNK.

person NERL    schedule 07.04.2013