2012-01-19 3 views
1

HessianKit을 간단한 Xcode iOS 테스트 프로젝트와 연결하려고합니다. 다른 빌드 구성을 시도했습니다. -ObjC 스위치를 라이브러리 프로젝트의 링커 명령 줄과 내 프로젝트의 링커 명령 줄에 모두 추가했습니다.HessianKit 연결 실패

Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_CWHessianConnection", referenced from: 
     objc-class-ref in MainWindowController.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
I 프로젝트를 보여주는 스크린을 부착

(는 HessianKit.framework를 포함

Ld /Users/wuttke/Library/Developer/Xcode/DerivedData/MatthiasSimpleTest-gfekzjmarzscwwgbynkuztivwkpw/Build/Products/Debug-iphonesimulator/MatthiasSimpleTest.app/MatthiasSimpleTest normal i386 
cd /Users/wuttke/Documents/MatthiasSimpleTest 
setenv MACOSX_DEPLOYMENT_TARGET 10.6 
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -L/Users/wuttke/Library/Developer/Xcode/DerivedData/MatthiasSimpleTest-gfekzjmarzscwwgbynkuztivwkpw/Build/Products/Debug-iphonesimulator -L/Users/wuttke/Documents/MatthiasSimpleTest/MatthiasSimpleTest -L/Users/wuttke/Documents/MatthiasSimpleTest -F/Users/wuttke/Library/Developer/Xcode/DerivedData/MatthiasSimpleTest-gfekzjmarzscwwgbynkuztivwkpw/Build/Products/Debug-iphonesimulator -F/Users/wuttke/Documents/MatthiasSimpleTest -filelist /Users/wuttke/Library/Developer/Xcode/DerivedData/MatthiasSimpleTest-gfekzjmarzscwwgbynkuztivwkpw/Build/Intermediates/MatthiasSimpleTest.build/Debug-iphonesimulator/MatthiasSimpleTest.build/Objects-normal/i386/MatthiasSimpleTest.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000 -framework UIKit -framework Foundation -framework CoreGraphics -framework HessianKit -o /Users/wuttke/Library/Developer/Xcode/DerivedData/MatthiasSimpleTest-gfekzjmarzscwwgbynkuztivwkpw/Build/Products/Debug-iphonesimulator/MatthiasSimpleTest.app/MatthiasSimpleTest 

이 링커에서 오류 메시지

메인 프로젝트 명령 라인 우리는 i386/MacOS, iOS 5.0 용으로 제작합니다.)

Screenshot Failure

라이브러리의 내용을 보여주는 몇 가지 출력이 연결되어야한다 :

Tobiass-MacBook-Pro:HessianKit.framework wuttke$ pwd 
/Users/wuttke/Documents/MatthiasSimpleTest/HessianKit.framework 
Tobiass-MacBook-Pro:HessianKit.framework wuttke$ ls 
Headers  HessianKit Resources Versions 
Tobiass-MacBook-Pro:HessianKit.framework wuttke$ nm -arch i386 HessianKit | grep CWHessianConnection 
000010a0 t +[CWHessianConnection proxyWithURL:protocol:] 
00001020 t -[CWHessianConnection initWithHessianVersion:] 
000011a0 t -[CWHessianConnection proxyWithURL:protocol:] 
00001260 t -[CWHessianConnection setVersion:] 
00001240 t -[CWHessianConnection version] 
0000d000 S .objc_class_name_CWHessianConnection 

내가 프로젝트에 직접 HessianKit 파일을 포함하려고 제안을 발견했다. ARC 때문에 컴파일 오류가 발생합니다.

시도해 볼만한 제안이 있습니까? 많은 감사드립니다.

마티아스는

+1

어디 HessianKit.framework입니까?어쩌면 당신은 프레임 워크에 대한 경로를 지정해야합니까? (clang 명령 줄의 -F). 대상 설정으로 이동하여 특정 파일에 대한 ARC를 비활성화하고 빌드 단계를 선택한 다음 소스 컴파일 섹션에서 HessianKit 파일을 선택하고 return 키를 누르면 대화 상자가 나타납니다. '-fno-objc-arc'를 입력하십시오. –

+0

마이크, 귀하의 의견을 많이 주셔서 감사합니다! 나는 HessianKit.framework 디렉토리를 빌드 옵션에 추가했다. (올바르게하려면 약간의 시간이 필요했다.) 이제 올바른 경로로 clang을위한 -F 스위치가 생겼다. 잘못된 경로가 경고를 냈다. 그러나 링커 오류는 여전히 남아 있습니다. –

+0

ARC를 사용하지 않도록 설정 한 "트릭"이 매우 잘 작동하므로 이제 HessianKit을 직접 포함 할 수있게되었습니다! 감사! ;-) –

답변

0

나는 엑스 코드에 아주 새로운 오전이 문제를 해결할 수 있었다. 내가 개발중인 프로젝트에서 HessianKit을 사용하려고했습니다.

문제에 대한 해결책

이 게시물에 설명되어 있습니다 : https://stackoverflow.com/a/7866167/1366367

분명히 아이폰 시뮬레이터는 i386을 아키텍처하지 하는 ARMv7을 위해 만들어진에 라이브러리를 필요로한다.

은 나를 위해 일한 :

  1. 프로젝트 열기 HessianKit
  2. 설정 자료 SDK HessianKit 대상에 (소스 포지에서 다운로드) 에 iphonesimulator
  3. StaticHessianKit 대상에 대한 명확한 자료 SDK (iphonesimulator 기본합니다)
  4. 실행 빌드
  5. ~/Library/Develope에서 libStaticHessianKit.a를 찾으십시오. r/Xcode/DerivedData/*/Build/Products/Debug-iphonesimulator 폴더
  6. libStaticHessianKit.a를 프로젝트로 드래그하십시오. 이렇게하면 라이브러리 검색 경로가 자동으로 설정됩니다.
  7. HessianKit 프레임 워크 폴더를 프로젝트에 끌어다 놓으십시오.
  8. 당신이 HessianKit을 사용하는 곳이를 가져올 수 있는지 확인하십시오 :

    #import <HessianKit/HessianKit.h> 
    

행운을 빕니다.

+0

고마워요! ;-) 그것은 i386이어야한다는 것이 분명해야합니다. –