2011-08-24 3 views
25

을 위해 만들어진 dylib에 연결 :애플 마하-O 링커 (ID) 경고 :에서라도을 위해 구축하지만, 링커 문제에 대해 불평에 과거 엑스 코드 4의 어느 시점에서 시작 아이폰 OS

ld: warning: building for MacOSX, but linking against dylib built for iOS: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks//CoreGraphics.framework/CoreGraphics

내가 체크 한 모든 하지만 여전히 설정에서 의심스럽지 않고 컴파일되고 실행됩니다. 내가 CoreGraphics.framework 전에 이중 슬래시 만 표시한다는 것을 알 수있는 이유는 무엇입니까? 도움이되지 않은 "빌드 단계"에서 라이브러리를 제거하고 다시 추가하려고 시도했습니다.

답변

-3

이 문제는 Xcode에 잘못된 프레임 워크 버전이 포함될 예정입니다. 이 프로젝트는 Mac OS X 용으로 제작되었지만 iOS 버전의 프레임 워크를 사용합니다.

5

사용중인 명령 줄의 빌드 로그를보고 Xcode 문제를 디버그하는 것이 더 쉬운 경우가 있습니다. 당신이 -miphoneos 버전 분을 지정하지 않은 경우

명령 줄에서 작성하는 경우, 당신은 자신의 메인 타겟에 대한 귀하의 프레임 워크 검색 경로를 확인 =

This compiles: 
(where conftest.c just contains int main() {}) 
/Applications/Xcode5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk -miphoneos-version-min=6.0 conftest.c 

And this gives the error: 
/Applications/Xcode5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk conftest.c 
ld: building for MacOSX, but linking against dylib built for iOS Simulator file '/Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/usr/lib/libSystem.dylib' for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+0

그건 내 문제를 해결하고 내 맛있는 upvote 있습니다. – Gui13

+4

Xcode 프로젝트에서 이러한 thnigs를 추가 할 위치는 어디입니까? 명령 줄이 아닌 Xcode에서 컴파일 중입니다.이 오류는 내가 받고 있습니다. ** ld : iOS Simulator 용으로 제작되었지만 dylib와 MacOSX 파일 용으로 작성된 링크 /usr/lib/libSystem.B .dylib '아키텍처 용 i386 clang : 오류 : 링커 명령이 종료 코드 1과 함께 실패했습니다 (호출을 보려면 -v 사용) ** _Others Linker Flat_ section에 libSystem.B.dylib의 항목이 하나 있습니다. 그것은 문제를 해결하지 못합니다. – Ans

4

를 해당 메시지를 얻을 수 있습니다 테스트 대상.

나는 많은 것을 쓰고있다.

은 엑스 코드 4에 기록 된 프로젝트를했고 내 테스트 프로젝트가

Project Navigator > click on project at top > 
Targets > Build Settings > Framework Search Paths 

TARGET:my_project 
$(inherited) 
"$(SRCROOT)" 
"$(SRCROOT)/my_project" 

TEST:my_projectTests 
"$(SDKROOT)/Developer/Library/Frameworks" <<XCTest.framework is here 
"$(DEVELOPER_LIBRARY_DIR)/Frameworks" 
"$(SRCROOT)/.." 
"$(SRCROOT)"        << Documents/my_project 
"$(SRCROOT)/my_project"     << Documents/my_project/my_project 

where directory structure is 
Documents/my_project 
    my_project.xcodeproj 
    /my_project 
실행하려면 여기를

엑스 코드 5에서 단위 테스트를 사용하기 시작 내가 얻을 수있는 최소의

참고 : 프레임 워크를 Xcode로 드래그하면됩니다. 엑스 코드 5 프로젝트가 뭐죠 올바른 것은 새를 만드는 것입니다 확인하는 문제를

가장 좋은 방법을 얻을 수 있습니다 이동 한 경우

/Users/gbxc/Documents/my_project 

그렇게

"$(SRCROOT)"        << Documents/my_project 
"$(SRCROOT)/my_project"     << Documents/my_project/my_project 

해야합니다 경로를 하드 코딩하는 나쁜 버릇이있다 테스트를 실행하는 단일보기 프로젝트입니다.

Run the Test action 
By default it fails but at least testing is running 
then compare the Framework Search Paths. 
+0

* Tests 대상에서 검색 프레임 워크 순서를 변경하면 나를 위해 그것을 고쳤습니다. $ (상속)이 "$ (SDKROOT)/Developer/Library/Frameworks"앞에 있지 않은지 확인하십시오. – Marius

0

는 카르타고를 사용하여 맥 응용 프로그램을 컴파일하는 경우, $(PROJECT_DIR)/Carthage/Build/iOS 같은 프로젝트의 Framework Search Paths 당신이 찾을 수있는 뭔가를 검색합니다.

내 문제가 해결되었습니다.