неприятность компоновщика в OpenCV 2.3.1 на DevCpp - PullRequest
1 голос
/ 10 января 2012

Небольшое описание моей среды: DevCpp 4.9.9.2 с OpenCV 2.3.1 в Windows Vista Home Premium SP1 32-разрядная

О моем проекте - файл .dev (FirstCVproj.dev) моего проекта находится вc: ... \ Desktop \ proj \ openCV \, и программа, которую я пытаюсь скомпилировать "facedetect.cpp", находится в c: \ opencv \ samples \ c

Конфигурация компилятора OpenCV в tools-> Компиляторы в DevCpp это:

Команды компилятора

-L"C:\opencv\build\x86\mingw\lib" -llibopencv_core231 -llibopencv_imgproc231 -llibopencv_calib3d231 -llibopencv_video231 -llibopencv_features2d231 -llibopencv_ml231 -llibopencv_highgui231 -llibopencv_objdetect231 -llibopencv_contrib231 -llibopencv_legacy231 -llibopencv_flann231

Команды компоновщика

-llibopencv_core231 -llibopencv_imgproc231 -llibopencv_calib3d231 -llibopencv_video231 -llibopencv_features2d231 -llibopencv_ml231 -llibopencv_highgui231 -llibopencv_objdetect231 -llibopencv_contrib231 -llibopencv_legacy231 -llibopencv_flann231

Библиотекикаталог : opencv \ build \ x86 \ mingw \ lib

двоичный каталог : opencv \ build \ x86 \ mingw \ bin

включить каталоги : все включаемые папки в папке opencv (в папке \ build и главной папке)

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

libgcc_s_dw2_1.dll не найден.Попробуйте переустановить приложение

Программа не может найти libgcc_s_dw2-1.dll

libstdc ++ - 6.dll не найдена.Попробуйте переустановить приложение libstdc ++ - 6.dll не найден

Поскольку использование -static или -static-libgcc или -static-libstdc ++ в окне параметров командной строки компоновщика не работает дляя скопировал первый файл dll в каталог моего проекта из какого-то другого каталога в моей системе, где я его нашел (и нигде в папке mingw32 в C: \ DevCpp), и скачал второй из сети, мой проект перестал выдаватьвременные ошибки, такие как «FirsCVProj перестал работать. Обратитесь к поставщику приложения за поддержкой» или «.dll не был найден»

Но стало хуже, потому что во время выполнения я видел окно вывода команд программы iкомпилировалась в моем проекте, но это появилось всего за доли секунды!

Я перестроил все это пару раз, но потом вспомнил цитату Эйнштейна «Повторение одного и того же и ожидание другого результата»безумие "я остановился .. Вот где вы, ребята, заходите. Вот журнал компиляции, из которого я не могуЯ удивляюсь, почему файлы не связываются.

Compiler: OpenCV
Building Makefile: "C:\Users\ronnieaka\Desktop\PROJ\openCV\Makefile.win"
Executing  make clean
rm -f ../../../../../opencv/samples/c/facedetect.o  FirstCVproj.exe
g++.exe -c ../../../../../opencv/samples/c/facedetect.cpp -o ../../../../../opencv/samples/c/facedetect.o -I"lib/gcc/mingw32/3.4.2/include"  -I"include/c++/3.4.2/backward"  -I"include/c++/3.4.2/mingw32"  -I"include/c++/3.4.2"  -I"include"  -I"C:/opencv/include"  -I"C:/opencv/include/opencv"  -I"C:/opencv/include/opencv2"  -I"C:/opencv/build/include"  -I"C:/opencv/build/include/opencv"  -I"C:/opencv/build/include/opencv2"    -L"C:\opencv\build\x86\mingw\lib" -llibopencv_core231 -llibopencv_imgproc231 -llibopencv_calib3d231 -llibopencv_video231 -llibopencv_features2d231 -llibopencv_ml231 -llibopencv_highgui231 -llibopencv_objdetect231 -llibopencv_contrib231 -llibopencv_legacy231 -llibopencv_flann231
g++.exe: -llibopencv_core231: linker input file unused because linking not done
g++.exe: -llibopencv_imgproc231: linker input file unused because linking not done
g++.exe: -llibopencv_calib3d231: linker input file unused because linking not done
g++.exe: -llibopencv_video231: linker input file unused because linking not done
g++.exe: -llibopencv_features2d231: linker input file unused because linking not done
g++.exe: -llibopencv_ml231: linker input file unused because linking not done
g++.exe: -llibopencv_highgui231: linker input file unused because linking not done
g++.exe: -llibopencv_objdetect231: linker input file unused because linking not done
g++.exe: -llibopencv_contrib231: linker input file unused because linking not done
g++.exe: -llibopencv_legacy231: linker input file unused because linking not done
g++.exe: -llibopencv_flann231: linker input file unused because linking not done
g++.exe ../../../../../opencv/samples/c/facedetect.o  -o "FirstCVproj.exe" -L"lib" -L"C:/opencv/build/x86/mingw/lib" -llibopencv_core231 -llibopencv_imgproc231 -llibopencv_calib3d231 -llibopencv_video231 -llibopencv_features2d231 -llibopencv_ml231 -llibopencv_highgui231 -llibopencv_objdetect231 -llibopencv_contrib231 -llibopencv_legacy231 -llibopencv_flann231  
Execution terminated
Compilation successful

РЕДАКТИРОВАТЬ:

Я также попытался opencv \ samples \ c \ mushroom.cpp, и я получил окно вывода, в котором деталипрограмма была напечатана, об ее авторе и т. д., но затем я получил сообщение Windows: «FirstCVproj перестал работать»

1 Ответ

1 голос
/ 10 января 2012

В командной строке можно увидеть, что вы добавляете этот путь в качестве пути к библиотекам:

-L"C:\opencv\build\x86\mingw\lib" 

Вам нужно убедиться, что это правильный каталог, убедившись, что все эти файлы можно найти там:

libopencv_core231 libopencv_imgproc231 libopencv_calib3d231 libopencv_video231
libopencv_features2d231 libopencv_ml231 libopencv_highgui231 libopencv_objdetect231 
libopencv_contrib231 libopencv_legacy231 libopencv_flann231

У меня не установлен Dev-C ++, и я не рекомендую его. Последняя официальная версия выпущена 22 февраля 2005 года:

Колин Лаплас заявил, что он занят проблемами реальной жизни и не успел продолжить разработку Dev-C ++.

Я настоятельно рекомендую вам перейти на другой компилятор , если вы рассматриваете Visual Studio Express (бесплатно), вы можете следовать этому руководству для настройки OpenCV .

EDIT :

Каталог библиотеки, который вы должны добавить, это тот, в котором есть файлы .a , и он может не совпадать с тем, в котором есть библиотеки DLL. Помните, что библиотеки DLL используются, когда приложение выполняется, а не когда приложение находится в процессе построения (связывания).

EDIT

Не включайте файлы библиотеки как -llibopencv_core231, сделайте это как -lopencv_core231.

...