2012-11-05 5 views
4

http://www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/을 거쳐 정적 라이브러리를 만들었습니다. 이 라이브러리를 테스트하기 위해 새 프로젝트를 만들고 정적 라이브러리를 프로젝트로 드래그하여 하나의 메서드를 테스트하려고했습니다. 하지만 그것은 ""_OBJC_CLASS _ $ _ MyLib "라는 오류를 제공하고 있습니다 :". MyLib은 내가 만든 라이브러리의 이름입니다.아키텍처 i386에 iOS 기호가 없습니다.

단계 정적 라이브러리 생성 단계. 1. 새 Xcode 프로젝트를 만들었습니다. 2. 옵션을 선택하여 코코아 터치 정적 라이브러리를 만듭니다. 3. MyLib.h에 두 개의 함수를 작성하고 fibonacci 계열에 대한 구현 및 기타의 팩토리얼 생성에 대한 구현을 작성했습니다. 3. 프로젝트를 작성하고 MyLib.a 파일을 클릭하여 파인더에 표시합니다. 4. MyLib라는 새로운 폴더에서 MyLib.a 파일과 MyLib.h를 드래그하십시오.

어떤 도움

+0

정의되지 않은 심볼 : "_OBJC_CLASS _ $ _ MYLIB"에서 참조 : LibTestViewController.o LD에서 objc 수준의-REF : 기호가 아키텍처 i386을 그 소리 찾을 수 없습니다 : 오류 : 링커 명령이 실패했습니다 종료 코드 1 (호출을 보려면 -v 사용) –

+0

어떻게 i386 아키텍처 용으로 빌드 할 수 있습니까? –

+0

정보 주셔서 감사합니다. –

답변

13

iOS 용 라이브러리, 프레임 워크 또는 응용 프로그램을 구축, 엑스 코드는 대상에 대한 빌드 설정에 지정된 아키텍처를위한 오브젝트 코드를 컴파일하십시오. XCode는 지정된 아키텍처가 내장 된 바이너리에만 연결됩니다.

XCode에서 대상을 선택하면 빌드 설정 탭에서 대상의 아키텍처를 볼 수 있습니다. arm6, arm7 및 i386과 같은 값을 포함합니다.

iOS 시뮬레이터에서 코드를 실행하면 데스크톱에서 i386 아키텍처 인 코드를 실행하게됩니다.

장치에서 실행될 때 이진 파일에는 해당 아키텍처 용으로 빌드 된 "슬라이스"가 있습니다. 올바른 "slice"아키텍처가 이진 파일에 없으면 실행되지 않습니다.

simluator에서 iOS 응용 프로그램을 실행하면서 누락 된 i386 아키텍처 오류가 발생하면 응용 프로그램과 모든 종속 라이브러리가 i386 아키텍처 용으로 빌드되었는지 확인해야합니다.

대상의 빌드 설정에서 "활성 아키텍처 만 빌드"가 아니오로 설정되어 있는지 확인하십시오.

소스가 없어 종속 라이브러리를 다시 빌드 할 수없는 경우 arm6 또는 arm7 아키텍처를 지원하는 장치에서 테스트해야합니다.

+0

유용한 정보를 공유해 주셔서 감사합니다. –

+1

빌드를 활성 아키텍처로 설정하여 코드를 다시 작성한 후 다시 사용하려고했습니다. 그 프레임 워크는 내가 이전에 만들었지 만 여전히 나에게 같은 오류를 주었다. 다시 빌드 빌드의 유효한 아키텍처에서 armv7, armv7s와 함께 i386 값을 입력하여 그것을 다시 작성했지만 여전히 헛되이 모든 –

+0

@ashutosh Bhatt 나는 또한 작동하지 않는 위의 답변을 시도, 당신이 제발 어떻게 고정 가이드 i386 오류입니다. – Arun

1

정확히 동일한 문제가있어서이 스레드에서 대답을 읽을 때 마침내 Xcode 4.5와 iOS 6에서 작동하게 할 수있었습니다. @ idz의 대답은 잘 작동하지만 앱의 프로젝트에 라이브러리의 프로젝트를 포함시킨 다음 의존성으로 설정해야하는 것은 바람직하지 않습니다.

1-8 단계는 매우 간단하고 명시 적입니다. 또한 헤더 검색 경로 프로젝트 설정이 정확한지 확인해야합니다. 행운을 빕니다!

XCode 4.3: Static Library Generation

2
난 내가 배운 오랜 투쟁 기간이 지난 후에 아래

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

같은 CPP 파일에 교류 헤더를 추가하려고 할 때 나는이 같은 문제를 가지고

것을 CPP 파일에서 가져 오기 C 헤더에 당신이 필요 이것을하십시오 :

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

그리고 나의 문제는 해결되었다.아키텍처 i386을위한

관련 문제