Ошибки при использовании OpenCV с opencv_contrib на XCode

Для моего приложения, работающего на iPhone, я использую OpenCV, используя opencv2.framework в Xcode с целью-c и C ++ в качестве языков. Моя разработка работала хорошо, пока я не захотел представить cv :: Tracker, который не включен в opencv2.framework, но является частью opencv_contrib.

  1. Я перестроил и установил из исходного кода opencv-3.4.0 с opencv_contrib-master, используя CMake и команды терминала make и install.

  2. В Xcode я установил
    HEADER_SEARCH_PATHS = / usr / local / include и
    LIBRARY_SEARCH_PATHS = / usr / local / lib

При компиляции я получаю длинный список ошибок стиля:

Undefined symbols for architecture x86_64:
"cv::error(int, cv::String const&, char const*, char const*, int)",
referenced from:
cv::Mat::Mat(int, int, int, void*, unsigned long) in OpenCVRenderer.o
"cv::Mat::operator=(cv::Scalar_<double> const&)", referenced from:
cv::Mat::Mat(int, int, int, cv::Scalar_<double> const&) in
OpenCVRenderer.o
cv::Mat::Mat(cv::Size_<int>, int, cv::Scalar_<double> const&) in
OpenCVRenderer.o
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in OpenCVRenderer.o
"cv::polylines(cv::_InputOutputArray const&, cv::_InputArray const&,
bool, cv::Scalar_<double> const&, int, int, int)", referenced from:
.
.
.

Я установил OTHER_LDFLAGS = (список dylibs opencv), перед которым стоит знак «-«

Теперь я получаю ошибки, как будто библиотеки не найдены, хотя на самом деле они находятся в / usr / local / lib

Например я получаю:

ld: library not found for -libopencv_core.3.4.0.dylib
clang: error: linker command failed with exit code 1 (use -v to see
invocation)

Любая помощь?
Спасибо.

0

Решение

Есть несколько проблем с вашими настройками.

  1. Вы только указали, где найти библиотеки, не opencv2.framework, Вы должны либо указать framework_search_path (и связать вашу структуру с проектом) или связать соответствующие библиотеки.

  2. Вы сказали, что создаете приложение для iPhone, но ошибка говорит Undefined symbols for architecture x86_64:, То есть вы создали приложение для симулятора телефона или для Mac. Тем не менее, ваш фреймворк, скорее всего, построен для архитектуры iPhone (armv7 а также arm64). В этом случае вам нужно перестроить фреймворк. Если вы создаете приложение для iPhone, сделайте не ссылка любая dylib библиотеки в /usr/local/lib/,

Обратите внимание, что libopencv_core.3.4.0.dylib является частью нормального opencv так что ошибка не имеет ничего общего с opencv_contrib (еще).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]