Вопрос по iphone, xcode, frameworks, static – Символы iOS не найдены для архитектуры i386

4

Я сделал статическую библиотеку после прохожденияhttp://www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/, Чтобы протестировать эту библиотеку, я сделал новый проект и перетащил статическую библиотеку в проект и попытался протестировать ее единственный метод. Но это дает мне ошибку "_OBJC_CLASS _ $ _ MyLib»Ссылка от ", MyLib - это название библиотеки, которую я создал.

Шаги, которые я предпринял при создании статической библиотеки. 1. Создан новый проект Xcode. 2. Выберите опцию для создания статической библиотеки Cocoa Touch. 3. Написал две функции в MyLib.h и написал реализации, одну для ряда Фибоначчи, а другую для генерации факториала числа. 3. Создайте проект и напишите клик по файлу MyLib.a с той частью, которую нужно найти в искателе 4. Перетащите файл MyLib.a и MyLib.h в новую папку с именем MyLib.

Любая помощь, пожалуйста

Спасибо за информацию Ashutosh Bhatt
Как я могу построить это для архитектуры i386 Ashutosh Bhatt
Неопределенные символы для архитектуры i386: "_OBJC_CLASS _ $ _ MyLib», ссылка из: objc-class-ref в LibTestViewController.o ld: символ (ы) не найден для архитектуры i386 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова) Ashutosh Bhatt

Ваш Ответ

3   ответа
1

и, наконец, я смог заставить ее работать в Xcode 4.5 и iOS 6, когда прочитал ответ в этой теме. Ответ @idz работает хорошо, но не стоит включать библиотеку.проект в вашем приложенииs проект, а затем установить его в качестве зависимости.

Шаги 1-8 очень просты и понятны. Вы также должны убедиться, что настройки проекта пути поиска заголовка точны. Удачи!

XCode 4.3: создание статической библиотеки

13

каркасов или приложений для iOS XCode будет компилировать объектный код только для архитектур, указанных в настройках сборки для целевого объекта. XCode также будет ссылаться только на двоичные файлы, в которые встроена указанная архитектура.

В XCode, если вы выбираете цель, вы можете увидеть на вкладке настроек сборки архитектуру вашей цели. Он будет содержать такие значения, как arm6, arm7 и i386.

При запуске кода в симуляторе iOS вы запускаете код на рабочем столе, который является архитектурой i386.

При запуске на устройстве бинарный файл имеетломтики» которые построены для этой архитектуры. Если правильная архитектураломтик" нет в двоичном коде, он не будет работать.

Если вы получаете ошибку отсутствующей архитектуры i386 при запуске приложения iOS в симуляторе, вам необходимо убедиться, что ваше приложение и все его зависимые библиотеки созданы для архитектуры i386.

Также проверьте, что "строить только активную архитектуру установлен в NO в настройках сборки для цели.

Если вы не можете перестроить зависимые библиотеки из-за отсутствия исходного кода, вам придется протестировать устройство, поддерживающее архитектуру arm6 или arm7.

@ashutosh Bhatt Я также попробовал приведенный выше ответ, он не работает. Можете ли вы рассказать мне, как вы исправили ошибку i386. Arun
Я перестроил код, установив сборку активной архитектуры только на NO, и снова попытался использовать ту платформу, которую я построил ранее, но все равно дал мне ту же ошибку. Я снова перестроил его, введя значение i386 вместе с armv7, armv7s в действующей архитектуре настроек сборки, но все же все напрасно Ashutosh Bhatt
Спасибо за обмен такой полезной информацией Ashutosh Bhatt
2

когда я пытался добавить заголовок c в файл cpp, как показано ниже

//in c++ header file
#import "cHeader.h"

После долгого периода борьбы я узнал, что для импорта заголовка c в файл cpp вам нужно сделать следующее:

//in c++ header file
extern "C"{
    #import "cHeader.h"
}

и моя проблема была решена.

Похожие вопросы