2013-09-25 13 views
5

Uaktualniłem system do wersji Xcode 5 i mogę poprawić karę za projekt przy użyciu istniejących ustawień.Błąd łącza C++ z Xcode 5 przy zmianie docelowej instalacji systemu iOS na iOS 7.0

Aktualizacja pakietu Base SDK do wersji 7.0 nie powoduje żadnych problemów.

Jednak po zmianie celu wdrożenia systemu iOS na system iOS 7.0, zacznę otrzymywać błędy łącza dla standardowych symboli C++. np:

Undefined symbols for architecture armv7 std::string::empty() const", referenced from... 

Co próbowałem:

  • Jawne łączenie standardowej C++ biblioteki
  • Zmiana "C++ Standard Library" ustawienie w Xcode 5. Próbowałem zarówno libstdC++, libC++ i "Compiler Default"

Po prostu nie znajduje symboli C++, jeśli cel wdrożenia jest ustawiony na system iOS 7.0, i działa, jeśli jest ustawiony na system iOS 6.1.

+0

Czy wyczyściłeś i przebudowałeś? – trojanfoe

+0

Tak, wyczyść i przebuduj, a także wyczyść folder kompilacji ... – Silohoutte

+0

spróbuj "Ustawienia kompilacji -> Źródła kompilacji jako -> Cel-C++' – yngccc

Odpowiedz

5

Okazuje się, że jeśli XCode nie może znaleźć żadnych plików C++ w projekcie, to zakłada, że ​​libstd ++ nie jest wymagany. Tak więc musisz ręcznie dodać plik C++ do projektu (wystarczy pusty plik .mm).

Wszystkie kredyty należą do tego answer w tym Stackoverflow thread.

+0

Dodanie obojętnego pliku .mm do projektu działa. To rozwiązuje problem, ale jeśli ktoś zna lepszy sposób obejścia tego problemu, byłoby miło go usłyszeć. – Silohoutte

+0

Całkowicie się zgadzam, to nadal jest obejście tego problemu. Myślę, że najlepszym rozwiązaniem byłoby działanie XCode. Jeśli znajdziesz lepsze rozwiązanie, udostępnij je również tutaj. – Guven

+0

Po prostu mieliśmy ten problem i stwierdziliśmy, że sam plik .mm nie wystarczy. Musieliśmy powiedzieć Xcode (wersja 5), ​​aby połączyć ze standardową biblioteką C++. –

Powiązane problemy