2014-10-24 2 views
0

시뮬레이터 및 장치에서 제대로 빌드되고 실행되는 iOS Xcode 프로젝트가 있습니다.Xcode 오류 : 파일이 연결된 아키텍처가 아닌 아카이브 용으로 빌드되었습니다. (x86_64)

ld: warning: ignoring file libXYZ.a, file was built for archive which is not the architecture being linked (x86_64): libXYZ.a 

Undefined symbols for architecture x86_64: 
"_OBJC_CLASS_$_XYXClass", referenced from: objc-class-ref in MyAppClass.o 

내가 문제를 이해 -이 장치에 잘 & 실행을 기반으로하지만, 시뮬레이터 내가이 오류를 얻을 것을 의미합니다 - 그러나, 나는 정적 라이브러리를 사용하여 필요로하는 새로운 기능이 (ARM 아키텍처 만 내장) 하지만 난 여전히 & (시뮬레이터에서 정적 라이브러리를 필요로하는 새로운 기능을 제외하거나 비활성화하여) 시뮬레이터에서 응용 프로그램을 실행할 수 있도록하고 싶습니다.

  1. 을 NO
  2. 에 $에 (ARCHS_STANDARD_INCLUDING_64_BIT)
  3. 설정 '활성 아키텍처를 구축'을 '아키텍처'를 설정 - 응용 프로그램뿐만 아니라 시뮬레이터 구축 할 수 있도록

    나는 다음과 같은 프로젝트 설정을 시도

아무 것도 작동하지 않았습니다. 어떤 생각을 어떻게 시뮬레이터를 구축 할 수 있습니까? 감사!

답변

1

가장 쉬운 해결책은 아마도 iOS 시뮬레이터 SDK에 대한 인텔 조각 (intel slices)과 4-way 지방 (i386 + x86_64/iOS Simualtor 및 armv7/arm64/iOS).

그럴 수 없다면 그 이유를 설명하고 레이더를 http://bugreport.apple.com에 신고하십시오. 그러면 어떤 문제로 인해 정적 보관 파일을 만들지 못하게 해결할 수 있습니다.

iOS 시뮬레이터 빌드에서 정적 보관 파일을 사용하지 않고 계속 진행하려면 시뮬레이터에서 XYXClass를 사용하지 않아야합니다. 당신은 뭔가를 수행하여이 작업을 수행 할 수 있습니다

은 "경고 : 파일 libXYZ.a을 무시하고 ..."라는
#include <TargetConditionals.h> 
#if TARGET_IPHONE_SIMULATOR 
    // Do sim-specific fallbacks 
#else 
    // Do stuff with XYXClass 
#endif 

참고 메시지가 치명적인 없습니다. 당신이 무시할 수있는 경고 일뿐입니다. 치명적인 부분은 x86_64에서 구현되지 않은 XYXClass를 사용하는 것입니다.

+0

감사! if/else는 훌륭하게 작동했습니다. 정적 아카이브는 타사 공급 업체가 제공하며 제어 할 권한이 없습니다. – Subhash

+0

아, 그건 의미가 있습니다. 이 제 3 자에게 iOS 시뮬레이터에서 작동하는 라이브러리 사본을 제공하도록 요청해야합니다. –

관련 문제