Я успішно створив демонстраційний додаток за допомогою opencv у Windows із середовищем оболонки MSYS.
Я НЕ використовував попередньо вбудований інсталятор opencv, я завантажував та компілював джерело локально (це рекомендований метод).
Після побудови opencv та запуску make install всі файли щасливо знаходяться в:
/e/deps/libopencv/build/install/
Я можу успішно створити зразок додатка проти цього, використовуючи директиви cmake у відповідності до:
find_package(OPENCV REQUIRED)
link_directory(${OpenCV_LIB_DIR})
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(target ${OpenCV_LIBS})
Щоб бути тут повністю зрозумілим: побудова двійкового файлу є успішний.
Тепер, коли я запускаю його з оболонки, я отримую повідомлення:
The program can"t start because libopencv_core231.dll is missing from your computer.
Try reinstalling the program to fix this problem.
Отже ... я знаю, де знаходяться бібліотеки:
$ ls /e/deps/libopencv/build/install/lib/
libopencv_calib3d231.dll.a libopencv_features2d231.dll.a libopencv_highgui231.dll.a libopencv_ml231.dll.a libopencv_video231.dll.a
libopencv_contrib231.dll.a libopencv_flann231.dll.a libopencv_imgproc231.dll.a libopencv_objdetect231.dll.a
libopencv_core231.dll.a libopencv_gpu231.dll.a libopencv_legacy231.dll.a libopencv_ts231.a
Що тепер?
Я думаю, я міг би спробувати зробити cmake побудувати статичний двійковий файл, але це здається досить екстремальним.
Як я можу якось зробити 1) вікна, або 2) середовище MSYS щасливим. Щось на зразок LD_LIBRARY_PATH на вікнах?
Або це не проблема, і я насправді (незважаючи на зовнішність) якось зіпсував спосіб складання двійкового файлу?
Редагувати:
Примітка. З якоїсь причини здається, що мої бібліотеки - це файли .dll.a, а не .dll (див. Результат ls), якщо це віддалено стосується.
Відповіді:
0 для відповіді № 1Windows шукає той самий каталог, що і exe, будь-який каталог у %PATH%
(Windows) або $PATH
(msys), а також кілька спеціальних у папці windows Ви можете додати /e/deps/libopencv/build/install/lib
твоєму $PATH
. Я не впевнений, що це буде працювати для msys, можливо, вам доведеться додати E:depslibopencvbuildinstalllib
до %PATH%
у вікнах.
Типове рішення для цього, якщо ви даєтепрограма для інших полягає у включенні копії DLL в той самий каталог, що і EXE. ви можете отримати цей самий ефект, зробивши символічне посилання на нього за допомогою команди
ln -s /e/deps/libopencv/build/install/lib/libopencv_core231.dll libopencv_core231.dll
в той час як в /e/deps/libopencv/build/install/
каталог