2009-07-07 27 views
7

Mam aplikację na iPhone'a, która mocno opiera się na bibliotece OpenCV; jako taki, skompilowałem statyczną wersję tej biblioteki do dołączenia do mojej aplikacji. Instrukcje dotyczące tego są stosunkowo proste: Using OpenCV on iPhone. Jedynym problemem, na który natrafiłem, było ustawienie flagi linkera, STANDARD_C_PLUS_PLUS_LIBRARY_TYPE na "". Aplikacja skompilowała się i działała perfekcyjnie pod OS 2.0 i 2.2.Łączenie bibliotek statycznych w iPhone SDK 3.0

Po aktualizacji do wersji SDK 3.0 i ponownym kompilowaniu mojej aplikacji, wystąpił problem z tą flagą linkera. Dostaję taki błąd podczas łączenie:

ld: biblioteki nie znaleziono -lstdC++ - statyczne

Jest również interesujące, że w moim systemie „libstdC++ - statyczne” występuje pod pozornie każde iPhoneOS i iPhoneSimulator SDK z wyjątkiem iPhoneOS.platform/SDKs/iPhoneOS3.0.sk. Oto wyniki wyszukiwania:

$ locate libstdc++-static 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/usr/lib/libstdc++-static.a 
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libstdc++-static.a 
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libstdc++-static.a 
/usr/lib/libstdc++-static.a 

mam dość płaskodenna i nie były w stanie znaleźć żadnych odpowiedzi w Google lub iPhone Dev forach. Byłbym bardzo wdzięczny, gdyby ktoś mógł rzucić tu trochę światła.

Dzięki!

+0

Jaką wersję libstdC++ ma system operacyjny 3.x? –

Odpowiedz

1

Tylko przypuszczenie - spróbuj dodać jeden z katalogów do opcji "Ścieżki wyszukiwania biblioteki" w oknie Właściwości kompilacji?

+0

To zadziałało! Dzięki! Próbowałem skopiować plik ze starszego SDK, ale to nie działało (chociaż nie jestem pewien, czy potrzebowałem zrobić odpowiednik 'ldconfig', aby ponownie zeskanować ten katalog, więc miałem zamiar zrestartować zamiast) – pix0r

+0

świetnie! Najpierw zacząłem myśleć o LD_LIBRARY_PATH, a potem zorientowałem się, że prawdopodobnie jest we właściwościach. – John

0

To jest naprawdę zagadkowe, jedyne o czym mogę pomyśleć to to, że /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk nie znajduje się w twojej ścieżce wyszukiwania biblioteki, ale byłoby to bardzo mało prawdopodobne.

+0

Próbowałem skompilować dla iPhoneOS, a nie symulatora. To musi działać dla obu. – pix0r

+0

Masz rację, to było tylko poślizgiem obok mnie, gdzie jest biblioteka dla iPhone'a? Nie pojawia się na twojej liście .... – hhafez

+0

Właśnie, to był problem;) Wygląda na to, że Apple opuścił to w SDK 3.0 - prawdopodobnie tylko pomyłkę. Okazuje się, że wersja 2.2 biblioteki działa dobrze w wersji 3.0. – pix0r

Powiązane problemy