2017-01-23 2 views
0

Ich versuche, eine IOS-Anwendung in XCode8 mit einigen vorhandenen C++ - Code, der Google Protobuf verwendet, zu erstellen, aber es kann nicht funktionieren.Verwenden Sie C++ Protobuf in XCode8 IOS-App

Ich versuchte CocoaPods wie beschrieben here und an anderen Orten zu verwenden.

Auch einige Gebäude Skripte versucht: script1, script2.

In all den Versuchen ich schließlich bekam:

Undefined symbols for architecture arm64: 
    "google_public::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google_public::protobuf::io::CodedOutputStream*)", 
    "google_public::protobuf::internal::WireFormat::VerifyUTF8StringFallback(char const*, int, google_public::protobuf::internal::WireFormat::Operation, char const*)", 
    "google_public::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned char*)", 

Mit einer Liste von einigen mehr protobuf Implementierung Funktionen, die fehlen.

Gibt es eine andere Möglichkeit zum kompilieren/verwenden der Protobuf-Bibliothek XCode für IOS App?

+0

Da die Funktionen in Fragen alle diejenigen sind, die 'std :: string' verwenden, frage ich mich, ob dies mit http://stackoverflow.com/questions/30124264/undefined-reference-to-googleprotobufinternalempty-string zu tun hat -abicxx11/30175210 –

Antwort

0

Gelöst: Ich hatte mehrere Versionen von Protobuf über mein System von allen Versuchen, und ich habe versehentlich verschiedene Versionen für die Includes, die Lib und die Protokoll generierten Dateien gemischt.

0

Wenn Sie C++ - Code integrieren möchten, müssen Sie die Dateiendung für den C++ - Code von .cpp in .mm ändern. Hast du das gemacht?

+0

Sicher. Der C++ - Code kompiliert und läuft gut bis zur Verwendung von Protobuf. – Oren