Подтвердить что ты не робот

Cocoapods OpenCV 2.4.10 Ошибка компоновщика

Я пытаюсь создать простой проект с использованием OpenCV 2.4.10, но я получаю кучу таких ошибок:

Undefined symbols for architecture x86_64:
  "_jpeg_free_large", referenced from:
      _free_pool in opencv2(jmemmgr.o)
  "_jpeg_free_small", referenced from:
      _free_pool in opencv2(jmemmgr.o)
      _self_destruct in opencv2(jmemmgr.o)

Вот ViewController.m

#import "ViewController.h"
#import <opencv2/opencv.hpp>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    cv::Mat greyMat;
}

Podfile

platform :ios, '8.1'

pod 'OpenCV', '2.4.10'

Проект строит отлично, когда я использую версию 2.4.9.1 или 2.4.9.
Я также смог создать этот проект с файлом фрейма, загруженным с URL-адреса, который я нашел в podspec 2.4.10.

4b9b3361

Ответ 1

Я добавил новые версии OpenCV в CocoaPods (2.4.11, 2.4.12, 2.4.12.3, 3.0.0).

2.4.11, 2.4.12 и 2.4.12.3 необходимо связать libjpeg, так что теперь программа фактически загружает репо, компилируется из источника, а затем связывает libjpeg в дополнение к файлу opencv2.framework. Теперь это получается из коробки через CocoaPods, однако при выполнении pod install требуется некоторое время, поскольку оно компилируется из исходного кода. Просто убедитесь, что не отменя его, пока он это делает (там ошибка в CocoaPods, которая вызывает проблемы, если она отменена).

Под капотом 3.0.0 работает так же, как и раньше, с предварительно созданным файлом opencv2.framework и теперь может быть установлен только через CocoaPods.

Версия 2.4.10 все еще сломана в CocoaPods, но поскольку эта версия выдает ошибки при компиляции из исходного кода на моем компьютере, я не могу ничего сделать.

(Примечание: я не являюсь первоначальным разработчиком модуля, я просто внес эти новые версии.)

Ответ 2

Ошибка 4052 по-прежнему не решена в отношении 2.4.10, и нет версии для 2.4.11, поэтому вам нужно использовать 2.4.9, который IMO стабилен.

Если вы используете pods

pod 'OpenCV', '2.4.9'

Ответ 3

Итак, вот немного обходного пути. Проблема в том, что проект XCode не может ссылаться на библиотеку libjpeg.a. Вот почему вы получаете вышеуказанные ошибки при компиляции проекта.

Выполните следующие действия:

  • Перейдите в: [[http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/]] и загрузите файл libjpeg-turbo-1.4.0.dmg(3.8 MB).
  • Установите пакет. После его завершения вы найдете установленные файлы по этому пути:/opt/libjpeg-turbo/lib
  • Откройте терминал и введите следующую команду: lipo -info/opt/libjpeg-turbo/lib/libjpeg.a
  • Если терминал выдает следующий результат после запуска команды, значит, вы можете использовать библиотеку для своего проекта iOS (armv7/armv7s)
    • Архитектуры в жирном файле:/opt/libjpeg-turbo/lib/libturbojpeg.a: i386 x86_64 armv6 armv7 armv7s arm64 *
  • Используйте finder для перехода к:/opt/libjpeg-turbo/lib и скопируйте libjpeg.a и поместите его в папку проекта.
  • Перейдите к проекту XCode → Щелкните по имени проекта → Цели → Общие → Связанные структуры и библиотеки → Нажмите кнопку добавления, расположенную внизу → , включите файл libjpeg.a
  • Скомпилируйте проект. Он не должен показывать больше ошибок линкера libjpeg.

Ответ 4

Кажется, проблема с текущей версией Open CV для iOS

Ошибка # 4052

Вероятно, нужно продолжать использовать 2.4.9.

Ответ 5

У меня нет решения для этого, но у меня есть обходной путь здесь. Я загрузил проект из здесь. И скопировал фреймворк и заголовок из этого проекта в мой проект. enter image description here