Почему моя программа на c ++ не может найти необходимый файл .dll? - PullRequest
3 голосов
/ 16 апреля 2010

Я пытаюсь использовать OpenCV (библиотека компьютерного зрения), которая, по-видимому, использует несколько DLL-файлов, расположенных в C:\OpenCV\bin (который был добавлен в системную переменную PATH). Однако, если я пытаюсь запустить простую тестовую программу, она выдает системную ошибку:

Программа не запускается из-за отсутствия файла highgui.dll на вашем компьютере. Попробуйте переустановить программу, чтобы решить эту проблему.

Если я скопирую файл highgui.dll в папку system32, он будет работать, но я не хочу помещать все необходимые файлы DLL в папку system32.

Кто-нибудь знает, почему файл .dll не может быть найден или что я должен сделать, чтобы это исправить?
(Я уже проверил все пути в переменной PATH на правильность.)

Ответы [ 5 ]

1 голос
/ 19 апреля 2010

Я отследил исполняемый файл, созданный Netbeans перед запуском, и запустил его, и он не дал ошибок (поэтому Netbeans, вероятно, использует свои собственные пути для выполнения), поэтому попытался выяснить, как заставить Netbeans искать правильные пути для библиотек DLL и после добавления переменной среды PATH = C: /OpenCV2.1/bin (Свойства проекта> Выполнить> Среда) программа работала правильно!
Я надеюсь, что это не какой-то хак, который «случайно» решает мою проблему, создавая худшие побочные эффекты ...
Спасибо за помощь!

0 голосов
/ 01 декабря 2015

У меня была эта проблема с использованием Visual Studio 12, и после проверки, чтобы убедиться, что в моем PATH в десятый раз нет опечаток, я заметил пробел после точки с запятой из предыдущего пути. Я удалил его, и Visual Studio смогла найти нужные мне библиотеки DLL.

Если в переменной PATH хранится несколько путей, убедитесь, что они разделены точками с запятой без пробелов .

0 голосов
/ 21 апреля 2011

Я использую OpenCV 2.2 с Visual Studio 10. Для создания нового проекта я делаю следующие шаги ... 1. Каталоги VC ++ -> Включить каталоги -> C: \ OpenCV2.2 \ include Библиотечные каталоги -> C: \ OpenCV2.2 \ lib 2.C / C ++ -> Общие -> Дополнительные каталоги включения -> C: \ OpenCV2.2 \ bin 3.Linker -> Input -> opencv_core220.lib; opencv_highgui220.lib; opencv_calib3d220.lib; opencv_contrib220.lib; opencv_features2d220.lib; opencv_ffmpeg220.lib; opencv_flann220.lib; opencv_gpu220.lib; opencv_imgproc220.lib; opencv_legacy220.lib; opencv_ml220. Lib; opencv_objdetect220.lib; opencv_ts220.lib; opencv_video220.lib;

  1. Я копирую все файлы DLL в папку отладки проекта. это не мешает мне, и все в порядке ..
0 голосов
/ 16 апреля 2010

Как запускается программа и как обновляется переменная PATH?

Если вы обновите путь в командном окне, но запустите приложение из вашей IDE или с рабочего стола Windows, среда для запущенного процесса, вероятно, будет иметь другой параметр PATH, чем среда для вашего командного окна.

Аналогичным образом, если вы измените PATH в апплете панели управления системой, это может не повлиять на IDE или окно команд, которое было запущено до того, как вы произвели редактирование PATH.

0 голосов
/ 16 апреля 2010

Вы пытались скопировать highgui.dll в вашу папку сборки. Поскольку она динамически связана, ваша программа будет искать ее локально, и если она не копируется в каталог сборки, она не сможет ее найти.

...