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:invalid или поврежденный файл: не может читать в 0x3F8 libcv200.dll

32
задан Hannes Ovrén 24 April 2010 в 16:57
поделиться

4 ответа

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

или

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

Выберите параметр Добавить OpenCV в системный PATH для текущего пользователя , который не является по умолчанию

16
ответ дан 27 November 2019 в 20:35
поделиться

".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-битную версию.На всякий случай откройте свойства вашего проекта и измените «Platform Target» на вкладке «Build» с «Any CPU» на «X86». Это нужно делать каждый раз, когда вы делаете что-либо с OpenCV, даже если вы используете оболочку, такую ​​как EmguCV.

-1
ответ дан 27 November 2019 в 20:35
поделиться

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

0
ответ дан 27 November 2019 в 20:35
поделиться

просто откройте папку bin, скопируйте и вставьте файлы .dll в папку, в которой вы работаете .. это должно исправить проблема

1
ответ дан 27 November 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: