Для моего приложения, работающего на iPhone, я использую OpenCV, используя opencv2.framework в Xcode с целью-c и C ++ в качестве языков. Моя разработка работала хорошо, пока я не захотел представить cv :: Tracker, который не включен в opencv2.framework, но является частью opencv_contrib.
Я перестроил и установил из исходного кода opencv-3.4.0 с opencv_contrib-master, используя CMake и команды терминала make и install.
В 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)
Любая помощь?
Спасибо.
Есть несколько проблем с вашими настройками.
Вы только указали, где найти библиотеки, не opencv2.framework
, Вы должны либо указать framework_search_path
(и связать вашу структуру с проектом) или связать соответствующие библиотеки.
Вы сказали, что создаете приложение для 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
(еще).
Других решений пока нет …