Как запустить OpenCvSharp в Ubuntu 18.04?
У меня проблема с запуском OpenCvShare на Ubuntu Linux. Он продолжает говорить, что libOpenCvSharpExtern не найден.
У меня проблема с запуском OpenCvSharp на моем Ubuntu 18.04.1 x64. Я создал решение.NET Core/Standard (Standard - это проект библиотеки, Core - это бегун). Проект библиотеки ссылается на пакеты Nuget: OpenCvSharp4 (4.0.0.20181225) OpenCvSharp4.runtime.ubuntu.18.04-x64 (4.0.0.20181225).
Затем, после удачной компиляции, я опубликовал проект runner, используя:
dotnet publish -c Release -r ubuntu.18.04-x64
Когда я запускаю исполняемый файл в Ubuntu, выдается следующее сообщение об ошибке:
Unhandled Exception: OpenCvSharp.OpenCvSharpException: Failed to create VideoCapture System.TypeInitializationException: The type initializer for 'OpenCvSharp.NativeMethods' threw an exception. OpenCvSharp.OpenCvSharpException: Unable to load shared library 'OpenCvSharpExtern' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libOpenCvSharpExtern: cannot open shared object file: No such file or directory ---> System.DllNotFoundException:
Unable to load shared library 'OpenCvSharpExtern' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libOpenCvSharpExtern: cannot open shared object file: No such file or directory
Файл libOpenCvSharpExtern.so находится по тому же пути, что и исполняемый файл, я также скопировал его в usr / local / lib, и id не помог. Приложение предназначено для обнаружения лиц на основе камеры.
1 ответ
Хорошо, у меня наконец-то все получилось. Проблема была в пути включения. Когда вы выполняете ldd libOpenCvSharpExtern.so
из терминала в пути, в котором находится lib, он выведет все библиотеки, на которые ссылается эта библиотека. Изначально у меня был полный список "не найденных" ссылок. Все отсутствующие библиотеки уже были установлены в /usr/local/lib
, Оказалось, что этот путь не является стандартным путем, по которому система ищет библиотеки. Ссылка на вопрос на форуме Ubuntu
После того как я добавил export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"
переменная окружения и перезагрузка системы, все начало работать, и с помощью ldd
на библиотеке libOpenCvSharpExtern.so ясно показало, что все библиотеки были найдены.