2009-10-25 4 views
21

저는 Xcode 초보자입니다. these instructions을 따르려고합니다. 필자는 원하는 프레임 워크가 앱 번들에 복사 되었기 때문에이를 참조 할 수 없기 때문에 분명히 놓친 것입니다.Xcode의 응용 프로그램과 함께 번들 프레임 워크

난 내 이외의 컴퓨터에서 응용 프로그램을 시작할 때 (또는 내가/라이브러리/프레임 워크 /에서 OpenCV의를 제거하면) 내가받을 다음과 같은 오류 :

Dyld Error Message: Library not loaded: /Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV Referenced from: /Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/MacOS/ClipSplitter Reason: image not found

에는 사용자가 "데이비드는"에 없습니다 내 시스템에 차이가 있다면. 또한 이것은 인터넷에서 다운로드받은 미리 만들어진 OpenCV입니다. (Here’s a screenshot of the project은 주석으로 요청했습니다.)

+0

앱 번들 내에있는 위치는 어디입니까? –

+0

콘텐츠/프레임 워크/OpenCV.framework –

+0

관련 대상이 완전히 확장 된 프로젝트 창의 스크린 샷을 게시하고 싶습니다. –

답변

29

OpenCV.framework가 빌드되면 /Users/david/Library/Frameworks/의 설치 경로를 사용하도록 구성되었습니다.

라이브러리를 개인 프레임 워크 (응용 프로그램 랩퍼 ClipSplitter.app/Contents/Frameworks/OpenCV.framework에 설치됨)로 사용하려면 설치 경로를 변경해야합니다. 이것은 다음과 같이 터미널을 사용하여 쉽게 수행 할 수 있습니다 물론

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV 

마지막 인수의 경로를 조정해야합니다.

이제 응용 프로그램을 링크 할 때 수정 된 프레임 워크가 dyld가 응용 프로그램의 응용 프로그램 래퍼 (ClipSplitter.app/Contents/Frameworks 디렉토리에 있음)에서 OpenCV.framework를 검색해야한다는 것을 링커에 알립니다.

이제 OpenCV.framework를 응용 프로그램 래퍼로 복사해야합니다. 복사 파일 빌드 단계를 추가하여 빌드 프로세스의 일부로이를 수행 할 수 있습니다. 대상을 마우스 오른쪽 단추로 클릭하고 추가 -> 새 빌드 단계 -> 새 사본 파일 빌드 단계를 선택하십시오. "Destination"팝업에서 "Frameworks"를 선택하고 대화 상자를 닫으십시오.

이제 대상에 Xcode 창의 왼쪽에있는 Project Navigator에서 아이콘을 드래그하여 OpenCV.framework를 추가 할 수있는 새로운 단계가 포함됩니다. Xcode에서는 '+'버튼을 사용하여 파일 복사 단계에 폴더를 추가 할 수 없으므로 &을 드래그해야하는 프레임 워크를 복사 할 수 있습니다.

+2

이것은 거의 완벽했다. 실제로 실행해야했던 명령은 다음과 같습니다. $ install_name_tool -id @executable_path /../Frameworks/OpenCV.framework/OpenCV /OpenCV.framework/OpenCV 그러나이 파일은 저를 데리고 오기에 충분했습니다. 감사!!!! –

+0

죄송합니다. 당신이 타이핑하고있는 것을 시도하지 않으면 그렇게됩니다. 혼란을 드려 죄송합니다. –

+0

설치 경로에 두 개 이상의 프레임 워크를 설치하는 경우 _ 서로 의존하지만 _ 실제로는 작동하지 않습니다. @loader_path /../ Frameworks에서 검색하도록 xcode 응용 프로그램의 실행 경로 검색 경로를 설정해야합니다. 이 설명이 정말 도움이되었다는 것을 알게되었습니다 : http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/ – NHDaly

6
+3

적어도이 설정은 프레임 워크를 만들 때 적용해야한다는 점을 언급해야합니다. 프레임 워크를 링크하는 응용 프로그램이 아닙니다. –

+0

그래, 내가 OpenCV 프레임 워크를 만들지 않았다는 것을 제외하고는 이것이 좋은 충고임을 확신한다. 미리 빌더를 다운로드했다. –

+1

나는 마지막 문장을 놓쳤다. 니콜라이의 대답은 그 경우에 더 적절하다. 왜 건물을 제대로 만들지 않고 왜 미리 작성된 오픈 소스 라이브러리를 고칠 때 시간을 낭비해야하는지 모르겠습니다. –

2

사용에서 응용 프로그램 번들의 개인 프레임 워크를 포함하기에 대한 장을 참조하십시오 @executable_path/../Frameworks

에 "설치 디렉토리"를 설정 빌드를 설정해야 애플리케이션 타겟 패널의 Build Phases 패널을 사용하여이를 용이하게하십시오.

이 패널의 기본 모양은 파일 복사 아래에있는 '+'버튼을 누르면

을, 당신은 앱 번들 프레임 워크에 복사하는 파일로 프레임 워크를 추가 할 수 있습니다.

이제 빌드 할 때 프레임 워크가 번들로 복사됩니다.

+1

이미지가 죽었습니다. 다시 업로드 하시겠습니까? – pkamb

관련 문제