Подтвердить что ты не робот

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

4b9b3361

Ответ 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

  1. открыть файловый менеджер
  2. щелкните правой кнопкой мыши на "этот компьютер" и выберите "свойства"
  3. Теперь в появившемся окне "Панель управления\Система и безопасность\Система" нажмите "Расширенные настройки системы" на левой панели.
  4. В нижней части следующего окна нажмите кнопку "Переменные среды".
  5. В следующем окне есть две панели: верхняя панель предназначена для изменения переменных для текущего пользователя, а нижняя панель предназначена для изменения переменных в системе. На нижней панели найдите переменную "Путь" и щелкните по ней, чтобы выбрать ее, затем нажмите кнопку "Изменить".
  6. Здесь вы можете создавать, редактировать, удалять или обновлять различные пути для системы. Например, чтобы добавить в систему mingw32-make, чтобы получить доступ к этой команде через командную строку, нажмите "Создать", а затем вставьте путь к корзине. Пример пути, "D:\Qt\Tools\mingw730_64\bin", без кавычек и дополнительных пробелов.
  7. Нажмите 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

Код должен работать без ошибок.