2014-12-02 4 views
0

Я: stucked в создании основы Cocoa TouchLink-Ошибка при создании Cocoa Touch Framework с вложенными библиотек

enter image description here

эта ошибка

Undefined symbols for architecture armv7: 
    "_AVMediaTypeVideo", referenced from: 
     _avf_read_header in libavdevice.a(avfoundation.o) 
    "_AVMediaTypeMuxed", referenced from: 
     _avf_read_header in libavdevice.a(avfoundation.o) 
    "_OBJC_CLASS_$_AVCaptureDeviceInput", referenced from: 
     objc-class-ref in libavdevice.a(avfoundation.o) 
    "_CMSampleBufferGetImageBuffer", referenced from: 
     _avf_read_header in libavdevice.a(avfoundation.o) 
     _avf_read_packet in libavdevice.a(avfoundation.o) 
    "_OBJC_CLASS_$_AVCaptureSession", referenced from: 
     objc-class-ref in libavdevice.a(avfoundation.o) 

... 

    "_LoggerAudio", referenced from: 
    -[KxMovieDecoder setSelectedAudioStream:] in KxMovieDecoder.o 
    -[KxMovieDecoder openAudioStream:] in KxMovieDecoder.o 
    -[KxMovieDecoder handleAudioFrame] in KxMovieDecoder.o 
    -[KxMovieDecoder decodeFrames:] in KxMovieDecoder.o 

ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

В проекте я использую несколько других систем dylibs и фреймворки и другие добавленные вручную статические библиотеки с их относительными заголовками.

Проект предназначен только для ios8, не-64.

Все библиотеки перечислены в разделе «Целевые»> «Основные»> «Связанные структуры и библиотеки». Заголовки включены правильно.

те же файлы, скомпилированные и связанные корректно выполняются в другом (обычное приложение, не библиотека) проект

Я попытался добавить PCH также добавить все необходимые библиотеки и ничего не изменилось.

+0

тех рамок, связанные в Target для вашей библиотеки? – Nick

+0

Здравствуйте, да (посмотрите на последние 3 строки вопроса). Спасибо – jalone

ответ

1

Динамическая работа библиотеки только для ИОС 8. Если вам необходимо использовать библиотеки динамической ваш проект, добавить свои рамки как Linked библиотеки и фреймворки и Embedded Бинарники в вкладке General. Это будет работа.

Вы можете изменить статическую библиотеку вместо динамической библиотеки. Настройка сборки -> Mach-O -> Static libarary, а также изменить цель развертывания как iOS 7.0. После того, как эти два изменения были внесены в вашу структуру, это работа над iOS 7.0 и более поздними версиями.

Здесь шаг для создания статического сенсорную какао рамки в Xcode 6.

Открыть Xcode и создать новый статический рамочный проект, нажав File \ New \ Project и выберите IOS \ Framework и рамки Library \ Cocoa Touch.

Назовите продукт FrameWorkName и сохраните проект в пустой каталог.

Автоматический заголовок зонтика, созданный для нашей структуры. В этом заголовке вы должны импортировать все публичные заголовки нашей структуры с помощью операторов, таких как #import

Статический проект рамки состоит из файлов заголовков и файлов реализации, которые скомпилированы для создания самой структуры. Вы можете создать класс, используя класс Cocoa Touch.

Проверка настроек сборки Перейдите к настройкам сборки вашего проекта. Задайте и подтвердите или установите «Архитектуры» в «Стандартные архитектуры». Это arm64 и armv7, и, скорее всего, они по умолчанию. Кроме того, нам нужно установить несколько архитектур в настройках, потому что приложения iOS должны работать на разных архитектурах.

ARMv7: Используется в самых старых прошивкой 7 поддерживающих устройств armv7s: При использовании в iPhone 5 и 5С arm64: Для 64-битного процессора ARM в iPhone 5S i386: Для 32-битной Тренажер x86_64 : Используется в 64-битном симуляторе

Это означает, что сборки строятся так же быстро, как они могут быть.Когда вы архивируете приложение или создаете в режиме выпуска, Xcode будет строить для всех архитектур ARM, что позволит приложению работать на большинстве устройств.

Mach-O Установка: Статическая библиотека:

Окончательный проект сборки:

Нажмите here (вы получили больше деталей.)

Совокупная цель объединить устройство и система симулирования с помощью липо

lipo "$ {SIMULATOR_LIBRARY_PATH}/$ {FRAMEWORK_NAME}" "$ {DEVICE_LIBRARY_PATH}/$ {FRAMEWORK_NAME}" -create -output "$ {FRAMEWORK}/$ {FRAMEWORK_NAME}" | эхо

Нажмите here вы должны получить шаг для создания универсальной основы

+0

Да, спасибо, так как я тогда подозревал, что причиной послужили динамические библиотеки supprot на ios7. – jalone

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