2011-07-30 6 views
10

znalazłem przykłady i posty, abybudynku statyczna C++ lib do użytku z Objective-C aplikacji w Xcode 4

  • Tworzenie statycznej C++ lib do użytku w C++ aplikacji
  • Tworzenie statycznej Objective lib C dla użyj w aplikacji Cel C.

Co nie mogłem znaleźć i nie zaczepiani wokół z wielu dni, to jest poprawny sposób tworzenia statycznych lib C++ do wykorzystania w aplikacji Objective-C pod XCode 4.

po prostu chcesz do korzystania z tego bardzo prostego kodu do celów testowych:

#include <iostream> 
#include "myCppLib.h" 

using namespace std; 

extern "C" void show_the_world() { 
    cout << "Hello, world!\n"; 
} 

skompilować to z armv6/ARMv7 cel, GCC 4.2 kompilatora, łącząc „C++ standardowej biblioteki Type” jako „Static” i mają „Symbole domyślnie ukryte” do TAK, zgodnie z opisem w pomocy Xcode dla statycznych bibliotek C++.

Moja Objective-C app, który nazywa „show_the_world” błędy funkcyjne o std ++ lib, który wydaje się nie być włączone lub nie prawidłowo odwoływać:

Undefined symbols for architecture armv6: 
"std::ios_base::Init::~Init()", referenced from: 
    ___tcf_0 in libmyCppLib_dev.a(myCppLib.o) 
    "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from: 
     _show_the_world in libmyCppLib_dev.a(myCppLib.o) 
    "std::ios_base::Init::Init()", referenced from: 
    __static_initialization_and_destruction_0(int, int)in libmyCppLib_dev.a(myCppLib.o) 
    "std::cout", referenced from: 
    _show_the_world in libmyCppLib_dev.a(myCppLib.o) 
ld: symbol(s) not found for architecture armv6 
collect2: ld returned 1 exit status 

Jestem pewien, że skompilowane biblioteki dla właściwa architektura, więc coś musi być nie tak w innym ustawieniu lub z moim kodem.

Każda pomoc jest mile widziana!

poważaniem, Jimmy

+0

Ten wątek może pomóc - http://stackoverflow.com/questions/376966/using-c-c-static-libraries- from-iphone-objectivec-apps. – Perception

+5

Jestem już nowy w tym poście, ale z powodu mojego "niezbyt dobrego" angielskiego, nie znalazłem odpowiedzi w tym poście. Po przekierowaniu mnie z powrotem do tego, poświęciłem sobie trochę więcej czasu - i teraz to działa :) chodziło o włączenie biblioteki std ++ do kompilacji powstałego projektu cel-c. Dziękuję bardzo! –

+0

Gratulacje za zrobienie tego! – Perception

Odpowiedz

2

odpowiedzieć w moim komentarzu;)

.

chodziło o to, aby dołączyć std ++ lib do kompilacji powstałego projektu cel-c.

10

Prawidłowa odpowiedź były dostarczone przez Jimmy Koerting w komentarzach: aplikacja musi być powiązany przed libstdC++ dylib rozwiązać standardowe symbole biblioteki.. Dzięki Jimmy Koerting, ale jeszcze jedno chcę dodać tutaj jest, jeśli używasz Xcode ostatnią wersję z iOS 6.1 proszę dodać tę libstdC++ 6.dylib

+0

Tak, na moim Xcode 5.0.2 musiałem użyć libstdC++. 6.dylib, aby rozwiązać błędy linkera. Używanie libstdC++. Dylib lub libC++. Dylib nie pomogło. –

Powiązane problemy