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 용으로 제작합니다.)이
라이브러리의 내용을 보여주는 몇 가지 출력이 연결되어야한다 :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 때문에 컴파일 오류가 발생합니다.
시도해 볼만한 제안이 있습니까? 많은 감사드립니다.
마티아스는
어디 HessianKit.framework입니까?어쩌면 당신은 프레임 워크에 대한 경로를 지정해야합니까? (clang 명령 줄의 -F). 대상 설정으로 이동하여 특정 파일에 대한 ARC를 비활성화하고 빌드 단계를 선택한 다음 소스 컴파일 섹션에서 HessianKit 파일을 선택하고 return 키를 누르면 대화 상자가 나타납니다. '-fno-objc-arc'를 입력하십시오. –
마이크, 귀하의 의견을 많이 주셔서 감사합니다! 나는 HessianKit.framework 디렉토리를 빌드 옵션에 추가했다. (올바르게하려면 약간의 시간이 필요했다.) 이제 올바른 경로로 clang을위한 -F 스위치가 생겼다. 잘못된 경로가 경고를 냈다. 그러나 링커 오류는 여전히 남아 있습니다. –
ARC를 사용하지 않도록 설정 한 "트릭"이 매우 잘 작동하므로 이제 HessianKit을 직접 포함 할 수있게되었습니다! 감사! ;-) –