2010-05-31 12 views
5

Stworzyłem działający framework Cocoa, który chcę redystrybuować. Problem jednak polega na tym, że nie będzie działał poza Xcode. Przeczytałem coś o @executable_path/../Frameworks, którego nie uwzględniłem, ponieważ nie wiem, gdzie to umieścić:/Tworzenie struktury Cocoa

Dlatego uruchamiam moją aplikację w Xcode przy użyciu zmiennej DYLD_FRAMEWORK_PATH, która działa dobrze, ale tylko w Xcode - jeśli spróbuję uruchomić go samodzielnie, to od razu się zawiesza i mówi: IMAGE NOT FOUND.

Jestem pewien, że brakuje czegoś, czego brakuje, ale nie wiem, gdzie to umieścić.

Czy ktoś może mi pomóc? :)

Dzięki

+1

Co masz na myśli przez _ciągnięcie_ ram? Struktury zwykle nie mają kodu bezpośrednio wykonywalnego. Czy zapoznał się Pan również z przewodnikiem po programowaniu? http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html#//apple_ref/doc/uid/10000183-SW1 Może nawet przejrzenie go da ci odpowiedzi. – zneak

+0

oczywiście przeczytałem to. Struktura jest importowana do mojej aplikacji, ale ulega awarii podczas uruchamiania. Przewodnik mówi także o ustawianiu '@executable_path /../ Frameworks', ale nie wiem, gdzie to jest. – Pripyat

+0

Próbowałem ustawić parametr "katalog instalacyjny" w ustawieniach projektu, ale nadal nie działa. Nadal mówi 'dyld: Library not loaded:' i 'Image not found' – Pripyat

Odpowiedz

3

Oto jak zwykle zarządzać rzeczy:

  1. W projekcie Xcode tych ram, ustaw katalog instalacyjny do @rpath

  2. Dodaj ramy do danej aplikacji Projekt Xcode. Dodaj fazę kompilacji Kopiuj pliki, wybierz Frameworki w oknie podręcznym Destination i upewnij się, że twoja struktura jest dodana, tak że zostanie skopiowana do katalogu Frameworks aplikacji, kiedy zostanie zbudowana.

  3. Wreszcie, w ustawieniach twojego projektu dodaj @loader_path /../ Frameworks do Runpath Search Paths.

+0

myślę, że nie jest zadowolony z @executable_path - Mam przesłanych zrzut dzienniku run tutaj: http://web.me.com/david.schiefer/error.tiff – Pripyat

+0

Jeśli używasz @rpath nie ma potrzeby dla @executable_path, więc nie jestem pewien, dlaczego widzisz ten błąd. – sbooth

0

Czy faktycznie kopiujesz framework do swojego pakietu aplikacji? Poszukaj folderu o nazwie MacOS, który zawiera plik binarny. Powinny istnieć inne foldery na tym samym poziomie, zwane Frameworkami, które powinny mieć w sobie strukturę.

Jeśli go tam nie ma, musisz utworzyć fazę kompilacji plików kopii dla aplikacji, która kopiuje framework do folderu Frameworki.

+0

po kliknięciu "Pokaż zawartość", widzę ramek (ma moje ramy w tym), zasoby i MacOS. – Pripyat

+0

i tak ma mój ram w nim, ale nadal robi praca – Pripyat

+0

OK, następną rzeczą jest, aby dowiedzieć się, gdzie aplikacja myśli powinno być. Otwórz sesję terminalową, przejdź do katalogu MacOS i uruchom 'otool -L' na pliku binarnym. – JeremyP

Powiązane problemy