2009-02-03 9 views
6

내 iPhone 응용 프로그램에서 PLDatabase 프레임 워크를 사용하려고합니다. 내 Xcode 프로젝트에 프레임 워크를 추가했습니다. 내 응용 프로그램을 실행할 때, 그것은 다음과 같은 오류와 충돌 :iPhone 프로젝트에 제 3 자 프레임 워크를 어떻게 추가합니까?

dyld: Library not loaded: @loader_path/../Frameworks/PlausibleDatabase.framework/Versions/A/PlausibleDatabase 
    Referenced from: /Users/todd/Library/Application Support/iPhone Simulator/User/Applications/BB3C66B2-A5BB-4329-B163-AB0072411AF1/Congress.app/Congress 
    Reason: image not found 

나는 프레임 워크가 디스크에서 찾을 수있는 필요가 정확히 모르겠어요.

감사합니다.

답변

10

iPhone은 내장 된 프레임 워크의 동적 연결을 지원하지 않습니다. 시뮬레이터가 작동하도록 할 수는 있지만 장치에서는 작동하지 않습니다. 코드를 사용하려면 프레임 워크 (libpldatabase.a)에 대한 정적 라이브러리를 작성한 다음 앱에 링크해야합니다.

Xcode GUI는 정적 연결을위한 훌륭한 인터페이스를 제공하지 않으므로 빌드 환경 설정 (-lpldatabase -L/whatever/dir/it/is/in)에 적절한 플래그를 추가해야합니다.

6

RE @mipadi : Xcode 3.1에서 ZeroLink가 제거되었으며 iPhone SDK에는 존재하지 않습니다. 정답은 Louis '; iPhone은 개발자가 만든 응용 프로그램에서 동적으로로드 된 프레임 워크를 지원하지 않습니다.

Xcode에는 정적 라이브러리를위한 훌륭한 사용자 인터페이스가 있습니다. 그것들을 프로젝트로 드래그하면 링크 단계에 추가됩니다. 링커 플래그로 조롱 할 필요가 없습니다. 문제는 정적 라이브러리와 함께 제공되는 헤더를 사용해야 할 때 (헤더 검색 경로를 수동으로 추가해야 할 때) 또는 정적 lib가 사용 가능한 dylib와 충돌 할 때 (즉, 수동으로 -l 플래그를 추가해야하는 경우) .

8

iPhone이 동적 연결을 지원하지 않는다는 것은 실제로 사실이 아닙니다. 사실은 앱 스토어에서 설치 한 애플리케이션을 동적으로 연결할 수 없다는 것입니다.

앱 스토어/ituned는 프로그램을/private/var/mobile/... 디렉토리에 설치합니다. 해당 하위 디렉토리에있는 모든 프로그램은 chroot되고 열 때 특정 권한이 제거됩니다. chroot 된 프로세스는 포크 할 수 없으며 백그라운드에서 실행할 수 없으며 동적 라이브러리를로드 할 수 없으며 디스크의 작은 보호 영역 밖에 파일을 저장할 수 없습니다 (사진 디렉토리의 사진 제외).).

그렇다면 아이폰은 다이나믹 링크를 지원하는 최신 운영체제를 사용하고 있습니다. 'jailbreaking'은 실제로 chroot jail 외부에 프로그램을 설치하여 포크와 같은 작업을 수행하고 디스크의 다른 위치에 파일을 저장하고 동적 코드를로드합니다.

Apple (및 열린 iPhone 커뮤니티)에는 배경에서 실행되고 라이브러리를 실행할 수있는 많은 프로그램 (예 : MobilePhone, Mobile Safari 및 SpringBoard 응용 프로그램)이 휴대 전화에서 실행됩니다. 그것들은 디스크상의 다른 장소 (/ private/var/stash/Applications)에 있습니다.

앱 스토어에서 앱을 판매하려면 동적 라이브러리를로드 할 수 없습니다. 대부분의 사람들은 당신이 그것을 전혀로드 할 수 없다는 것을 의미합니다. 그러나 cydia (일반적인 jailbroken 전화 앱 설치 프로그램)를 통해 앱을 배포하려는 경우 전화를 jailbreaking하고 dynaamic 라이브러리를로드하는 것으로 도망 갈 수 있습니다. 사실, 아이튠즈 설치 프로세스가 범인이기 때문에, 배웠 듯이 자신의 앱에서 dylib를로드 할 수 없으며, 감옥에 다니지 않는 한 자신 만의 휴대 전화에 글을 씁니다.

관련 문제