2011-06-12 2 views
3

this 예제를 사용하여 Xcode 프로젝트에서 정적 라이브러리를 만들고 사용하는 방법을 배우려고합니다. 그러나 나는이 오류를 계속받습니다 :프로젝트에 정적 라이브러리를 추가 할 때 오류가 발생했습니다.

ld: warning: ignoring file /Developer/MathTest/iCodeBlogsMathLibrary/libICodeMathUtils.a,  
missing required architecture i386 in file 
Undefined symbols for architecture i386: 
"_OBJC_CLASS_$_MathFunctions", referenced from: 
    objc-class-ref in MathTestViewController.o 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 

무엇이 누락 되었습니까?

답변

5

i386 아키텍처에 해당하는 시뮬레이터를 사용하고있는 것처럼 보이지만 iphone (arm) 라이브러리로만 연결됩니다.

이 문제를 해결하려면 i386과 arm 모두 libICodeMathUtils.a 라이브러리를 컴파일해야합니다.

다음 튜토리얼을 살펴본 후 : 프로젝트에 정적 라이브러리를 통합하는 더 좋은 방법은 종속성을 정의하는 것입니다. 당신은이 S.O.를 볼 수 있습니다. Xcode 4에 대한 기사 및 Xcode 3에 대한 기사 (단계는 문제 자체에서 제공됩니다).

다른 옵션은 i386 (시뮬레이터) 및 arm (장치) 용 라이브러리를 별도로 빌드 한 다음 명령 행 도구 lipo을 사용하여 MathTest 프로젝트에 연결할 수있는 팻 라이브러리를 만드는 것입니다. man lipo을 확인하여 도구를 사용하십시오.

편집 : 귀하의 코멘트에 대해

My static library does not show in Target Dependencies !!

이 대상에 포함 된 프로젝트 트리에서 정적 라이브러리를 끌고있다? Xcode 3의 단계는 다음과 같습니다.

  1. 라이브러리 프로젝트를 포함 된 프로젝트로 추가하십시오.

  2. 포함 된 프로젝트에서 정적 라이브러리를 찾아 기본 대상으로 드래그하여 링크 된 프레임 워크로 추가하십시오.

  3. 마지막으로 대상 정보 창에서 종속성을 추가 할 수 있습니다.

Xcode4는 대상이 프로젝트 구성표에 추가되면 자동으로 종속성을 파악할 수있는 것처럼 보입니다. Scheme -> Build ->을 실행 한 다음 작업 영역에서 대상을 추가하여 실행할 수 있습니다. 이 내용은 S.O. question을 참조하십시오. 내 경우

+0

내 정적 라이브러리가 타겟 종속성에 표시되지 않습니다! – NSExplorer

+0

안녕하세요, 답변 끝에 2 개의 링크를 추가했습니다. – sergio

+0

최근 편집을 참조하십시오. – sergio

관련 문제