2013-05-10 4 views
2

Я интегрирую opencv2.framework с моим проектом. Я выполнил следующие шаги для завершения.opencv2.framework/opencv2 (surf.o) дублирующие символы для архитектуры armv7

  1. Добавлена ​​opencv2.framework в "Linked Каркасы и библиотеки"
  2. Добавлено LibC++. Dylib в "Linked библиотеки и фреймворки"
  3. Добавлено следующий код AppName-Prefix.pch файл

    #ifdef __cplusplus
    #import "opencv2/opencv.hpp"
    #endif

  4. Изменен компилятор по умолчанию компании Apple LLVM компилятор 4.2 - Language -> C++ Язык Диалект -> GNU ++ 11 [-std = гну ++ 11] C++ Standard Library -> LibC++ (LLVM C++ стандартный libray с C++ 11 поддержки)

Тем не менее я получаю ошибку ссылки, которая говорит

"opencv2.framework/opencv2 (surf.o) л.д.: 21 дублирующих символы для архитектуры ARMv7"

Может ли кто-нибудь помочь мне в этом?

РЕДАКТИРОВАТЬ:

Мой XCode версия 4.6, IOS SDK 6.1 и целевое развертывание 4.3 (я тестировал с 5.0 также, но не работает в этой цели тоже)

ответ

2

Обновление: github pull request, который исправляет эту проблему, теперь объединен с OpenCV.

Причина: В OpenCV source, есть два файла с именем 1. surf.cpp и 2. surf.ocl.cpp, который приводит к два surf.o объектных файлов для каждой архитектуры внутри каркас OpenCV библиотеки.

Fix: В OpenCV источника, применить патч от GitHub тянуть request и Build OpenCV для прошивки.

См: Использование lipo на OpenCV, чтобы извлечь отдельные библиотеки для каждой архитектуры (ARMv7, armv7s и i386), а затем использовать ar -tv увидеть два объектных файлов одного и того же размера с именем surf.o

Я не 't know: Только некоторые проекты XCode не работают с предварительно построенной инфраструктурой OpenCV. Я использую Xcode 5.0 с OpenCV 2.4.6.1. Может ли это быть исправлено с некоторыми настройками сборки XCode?

+0

@Kiran .. Благодарим вас за ответ. Я думаю, что есть некоторые настройки сборки XCode или что-то, чтобы исправить эту проблему. Я исправил проблему, но не вспомнил. Сообщение было добавлено 5 месяцев назад. :) – imalvare

Смежные вопросы