2010-04-22 7 views
32

Я пытаюсь только базовую программу с OpenCV следующим кодом:OpenCV - DLL отсутствует, но это не так?

#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

Вы еще не решили эту проблему? –

ответ

14

Просто добавьте C:\OpenCV2.0\bin в свой PATH переменной среды

или

При установке OpenCV,

Выберите вариант, Add OpenCV to the system PATH for current user который не по умолчанию один

+0

Это уже на моем пути. Я заметил эту опцию при установке, и я выбрал ее. –

+0

@charles, довольно странно, я не мог воспроизвести ваши ошибки, ваши примеры кода работают нормально. только я использую mingw32-gcc вместо visual studio 2008 C++ компилятора. – YOU

+0

Интересно. Я действительно не чувствую, что это должно дать мне эту ошибку, поскольку это, похоже, не является общей проблемой. Смешение. –

-1

«.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, поэтому вы можете использовать такой язык, как C#, который не поставляется со всем C++ багажом указателей, заголовочных файлов, и проблема распределения памяти.

А что касается вопроса о 64-битном или 32-битном, то OpenCV официально не поддерживает 64-битную. Чтобы быть в безопасности, откройте свои свойства проекта и измените «Target Platform» на вкладке «Build» с «Любой процессор» до «X86». Это нужно делать каждый раз, когда вы делаете что-либо с OpenCV, даже если вы используете обертку, такую ​​как EmguCV.

0

Что касается ответа @ Marc, я не думаю, что VC использует путь от ОС. Вы добавили путь к библиотечным путям VC.Я обычно добавляю библиотеки DLL в проект и копирую, если они более новые в сборке, и это очень хорошо работает для меня.

1

просто открыть папку бен и скопировать и вставить DLL-файлы в папке вы работаете in..it должны решить эту проблему

+0

нет. dll! = dll.a – Doug

13

Просто для информации, после того, как добавить «PATH», на мой win7 Мне нужно перезагрузить его, чтобы он работал.

+3

Окончательный, перезагрузка помогла мне. – Naomak

+0

, как правило, просто выходить из системы, для входа в систему без перезагрузки достаточно – user3085931

+0

visual studio 2015 opencv 3.10 Отсутствие проблемы с dll после перезагрузки :) –

23

Я следовал инструкциям на http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010, но по-прежнему оставался на той же проблеме, поэтому я решил это.

  1. Выбрано MSVC 2010 express edition.

  2. Выбрано Win 32 OpenCV 2.2 и установлено по умолчанию.

  3. Создан новый проект.

  4. установки

    Проект -> Свойства OpenCV_Helloworld ... Свойства конфигурации -> VC++ Справочники

    Include Directories ... добавить: C:\OpenCV2.2\include\;

    Библиотека Каталоги ... добавить: C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;

    Источник Справочники ... добавить:

    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 -> Дополнительные зависимости ...

    Для отладки Строит ... добавить:

    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 -> Общие ... Установить «Использовать библиотеку Dependency Входы» «Да»

Надеется, что это помогает.

+2

Спасибо за это решение. Быстрое решение проблемы. – TelsaBoil

+5

после этого, проблема сохраняется. Затем я перезапустил MS Visual Studio 2010, а затем он сработал. –

+1

@ ParagS.Chandakkar Ваш комментарий должен быть признаком ответа! – nabroyan

-6

Не нужно ничего делать. Это визуальная студийная ошибка.

просто идут сюда: http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31354

и загрузить соответствующий фикс для ОС вашего компьютера

близко Visual Studio, запустите исправление и перезапустите VS

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

6

У меня было много проблем с opencv и только удалось после ужасных 4-6 месяцев. Это последняя проблема, которая у меня была, но все вышеперечисленное не сработало. То, что сработало для меня, было просто копирование и вставка файла opencv_core2 * .dll (и opencv_highgui2 * .dll, который он попросит, поскольку вы включили его также) в релиз (или папку отладки - я предполагаю).) вашего проекта, где находится ваш файл приложения.

Надеюсь, это поможет!

+0

Можете ли вы понять, почему обновление переменной окружения не помогло? – Snehasish

+0

Я предполагаю, что это произошло потому, что вы 1. не перезапустили приложение после обновления пути и/или 2. переменная пути не содержала папку с DLL. Вы должны убедиться, что папка bin, на которую вы указываете, содержит DLL, и это должна быть правильная версия DLL, с которой связан линкер. – Domi

0

Скопируйте все .dll из/bin в System32

4

Вам просто нужно добавить папку требуемого файла DLL (или файлы) в системе «Переменные среды» в «Пути». Ваша проблема будет устранена на 100%. У меня тоже была эта пробема.

0

вы можете найти opencv_core248 и другие dll в папке opencv \ build \ x86 \ vc12 \ bin. Просто скопируйте необходимые вам библиотеки DLL в папку system32. И ваше приложение должно начать работать мгновенно! Надеюсь, поможет.

+4

Феникс, это ужасная идея. STOP добавляет дополнительные ответы на подобные вопросы – berak

-1

Просто скопируйте DLL-файлы в C: \ WINDOWS \ system32 \

4

В Visual Studio 2013 вам нужно добавить это в Environment VariablesRestart, а затем ваш компьютер. Это путь, по которому .dll файл, расположенный в.

enter image description here

Смежные вопросы