OpenCV - DLL отсутствует, но это не так?
Я пытаюсь создать базовую программу с OpenCV со следующим кодом:
#include "cv.h"
#include "highgui.h"
int main()
{
IplImage* newImg;
newImg = cvLoadImage("~/apple.bmp", 1);
cvNamedWindow("Window", 1);
cvShowImage("Window", newImg);
cvWaitKey(0);
cvDestroyWindow("Window");
cvReleaseImage(&newImg);
return 0;
}
Когда я запускаю это, я получаю
Программа не может запускаться, потому что libcxcore200.dll отсутствует на вашем компьютер. Попробуйте переустановить чтобы устранить эту проблему.
Однако я вижу эту DLL. Это существует. Я добавил следующее к зависимостям ввода для моего компоновщика
C:\OpenCV2.0\Lib\libcv200.dll.a C:\OpenCV2.0\Lib\libcvaux200.dll.a C:\OpenCV2.0\Lib\libcxcore200.dll.a C:\OpenCV2.0\Lib\libhighgui200.dll.a
Что дает? Я использую visual studio 2008.
Когда я связываю файлы .dll вместо файлов .dll.a, я получаю
фатальная ошибка LNK1107: неверный или поврежденный файл: не может читать на 0x3F8 libcv200.dll
Ответы
Ответ 1
Я следил за инструкциями http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010, но по-прежнему оставался в одной и той же проблеме, поэтому я решил, как это решить.
-
Вышла экспресс-версия MSVC 2010.
-
Загрузите исполняемые файлы Win 32 OpenCV 2.2 и установите их по умолчанию.
-
Создан новый проект.
-
Настройка проекта
Проект → Свойства OpenCV_Helloworld... Свойства конфигурации → Каталоги VС++
Включить каталоги... add: C:\OpenCV2.2\include\;
Библиотечные каталоги... добавить: C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;
Источники каталогов... add:
C:\OpenCV2.2\modules\calib3d\src;C:\OpenCV2.2\modules\contrib\src;C:\OpenCV2.2\modules\core\src;C:\OpenCV2.2\modules\features2d\src;C:\OpenCV2.2\modules\flann\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\highgui\src;C:\OpenCV2.2\modules\imgproc\src;C:\OpenCV2.2\modules\legacy\src;C:\OpenCV2.2\modules\ml\src;C:\OpenCV2.2\modules\objdetect\src;C:\OpenCV2.2\modules\video\src;
Linker → Input → Additional Dependencies...
Для отладки сборки... add:
opencv_calib3d220d.lib;opencv_contrib220d.lib;opencv_core220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;opencv_flann220d.lib;opencv_gpu220d.lib;opencv_highgui220d.lib;opencv_imgproc220d.lib;opencv_legacy220d.lib;opencv_ml220d.lib;opencv_objdetect220d.lib;opencv_video220d.lib;
В этот момент я подумал, что все закончилось, но столкнулся с проблемой, которую вы описали при запуске exe в режиме отладки. Окончательный шаг очевиден, как только вы его увидите, выберите:
Linker → General... Установите "Использовать вкладки зависимостей библиотеки" на "Да"
Надеюсь, что это поможет.
Ответ 2
Просто добавьте C:\OpenCV2.0\bin
в переменную среды PATH
или
Когда вы устанавливаете OpenCV,
Выберите параметр Add OpenCV to the system PATH for current user
, который по умолчанию не установлен
Ответ 3
Просто для вашей информации, после добавления "PATH", для моего win7 мне нужно перезагрузить его, чтобы заставить его работать.
Ответ 4
У меня было много проблем с opencv и только удалось после ужасных 4-6 месяцев. Это последняя проблема, которая у меня была, но все вышеперечисленное не сработало. То, что сработало для меня, было просто копирование и вставка файла opencv_core2 *.dll(и opencv_highgui2 *.dll, который он попросит, поскольку вы включили его также) в релиз (или папку отладки - я предполагаю). ) в вашем проекте, где находится ваш файл приложения.
Надеюсь, это поможет!
Ответ 5
В Visual Studio 2013 вам нужно добавить это в Environment Variables
а затем Restart
компьютер. Это путь, в котором находится DLL файл.
![enter image description here]()
Ответ 6
Вам просто нужно добавить папку нужного файла (или файлов) dll в вашу систему "Переменные среды" в "Путь".
Ваша проблема будет устранена на 100%. У меня тоже была эта проблема.
Ответ 7
просто откройте папку bin и скопируйте и вставьте DLL файлы в папку, в которой вы работаете. Это должно устранить проблему.
Ответ 8
Что касается ответа @Marc, я не думаю, что VC использует путь от ОС. Вы добавили путь к пути библиотеки VC. Я обычно добавляю библиотеки DLL в проект и копирую, если новее в сборке, и это очень хорошо работает для меня.
Ответ 9
вы можете найти opencv_core248 и другие dll в папке opencv\build\x86\vc12\bin. Просто скопируйте необходимые вам библиотеки DLL в папку system32. И ваше приложение должно начать работать мгновенно! Надеюсь, что это поможет.
Ответ 10
Это может быть похоже на воскрешение мертвой лошади. Но именно так и есть, поэтому причина, по которой ответы на эти типы вопросов просто помещают dll в папку system32, заключается в том, что эта папка находится в системном пути os.
На самом деле, лучше всего предоставить ОС ссылку на путь.
С windows 10
- открыть файловый менеджер
- щелкните правой кнопкой мыши на "этот компьютер" и выберите "свойства"
- Теперь в появившемся окне "Панель управления\Система и безопасность\Система" нажмите "Расширенные настройки системы" на левой панели.
- В нижней части следующего окна нажмите кнопку "Переменные среды".
- В следующем окне есть две панели: верхняя панель предназначена для изменения переменных для текущего пользователя, а нижняя панель предназначена для изменения переменных в системе. На нижней панели найдите переменную "Путь" и щелкните по ней, чтобы выбрать ее, затем нажмите кнопку "Изменить".
- Здесь вы можете создавать, редактировать, удалять или обновлять различные пути для системы. Например, чтобы добавить в систему mingw32-make, чтобы получить доступ к этой команде через командную строку, нажмите "Создать", а затем вставьте путь к корзине. Пример пути, "D:\Qt\Tools\mingw730_64\bin", без кавычек и дополнительных пробелов.
- Нажмите ok во всех окнах, чтобы сохранить изменения, затем перезагрузите компьютер, чтобы изменения были загружены.
Ответ 11
".a" в конце ваших DLL файлов является проблемой, и они есть, потому что вы не использовали CMAKE для сборки OpenCV 2.0. Кроме того, вы не ссылаетесь на файлы DLL, вы ссылаетесь на файлы библиотеки, и опять же, причина, по которой вы не видите правильные файлы библиотек, заключается в том, что вы не использовали CMAKE для сборки OpenCV 2.0. Если вы хотите использовать OpenCV 2.0, вы должны создать его для правильной работы в Visual Studio. Если вы не хотите его строить, я бы предложил понизить до OpenCV 1.1pre, он поставляется с предустановленной и гораздо более прощающей в Visual Studio.
Другой вариант (и тот, который я бы рекомендовал) - отказаться от OpenCV и перейти с EmguCV. Я играю в OpenCV около года, и мне стало намного легче, когда я переключился на EmguCV, потому что EmguCV работает с .NET, поэтому вы можете использовать такой язык, как С#, который не поставляется со всем С++ багажом указателей, заголовочных файлов, и проблема распределения памяти.
И что касается вопроса о 64-битном и 32-битном, OpenCV официально не поддерживает 64-битную. Чтобы быть в безопасности, откройте свои свойства проекта и измените "Target Platform" на вкладке "Build" с "Любой процессор" до "X86". Это нужно делать каждый раз, когда вы делаете что-либо с OpenCV, даже если вы используете обертку, такую как EmguCV.
Ответ 12
Скопировать всю DLL из /bin в System32
Ответ 13
Просто скопируйте файлы .dll в C:\windows\system32\
Ответ 14
Не нужно ничего делать. Это ошибка визуальной студии.
просто зайдите сюда:
http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31354
и загрузите соответствующее исправление для вашего компьютера.
закрыть визуальную студию, запустить исправление, а затем перезапустить VS
Код должен работать без ошибок.