Ich versuche eine Beispiel-C++ - Anwendung von Protobuf mit CMake zu erstellen. Aber Linker kann einige Methoden nicht finden, die mit Protobuf in Verbindung stehen.Ich kann keine Test-C++ - App mit Googles Protobuf erstellen
Ich verwende Beispiel .proto-Datei von developers guide. Aber wenn Linker versuchen Objektdatei zu bauen für protobuf C erzeugt ++ Code, den ich habe viele Fehler wie folgt aus:
undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
undefined reference to `google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::string const&, unsigned char*)'
undefined reference to `google::protobuf::internal::empty_string_'
undefined reference to `google::protobuf::internal::InitEmptyString()'
undefined reference to `google::protobuf::internal::empty_string_once_init_'
undefined reference to `google::protobuf::internal::WireFormat::VerifyUTF8StringFallback(char const*, int, google::protobuf::internal::WireFormat::Operation, char const*)'
Ich benutze protobuf 2.6.1 gebaut mich mit GCC 4.8.4. Beispielanwendung wird von CMake in QTCreator mit QT 5.5.1 Toolset und GCC 4.8.4 erstellt. Es gibt meine CMakeList.txt
project(protobuf-test)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
LINK_DIRECTORIES(/usr/lib)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} pthread protobuf)
Vielen Dank für Ihre Hilfe!
Wenn Sie selbst Protobuf erstellt haben, wo haben Sie es installiert? Im System '/ usr/lib'? In der üblichen '/ usr/local/lib'? Irgendwo anders? –
sollten Sie Ihren Linker-Befehl einfügen und sicherstellen, dass Ihre Protobuf-Lib im Suchpfad ist. – Bruce
Ich habe _libprotobuf_ in '/ usr/lib' installiert. Und ich verwende "LINK_DIRECTORIES (/ usr/lib)" in CMakeList.txt, um diesen Pfad dem Linker-Pfad hinzuzufügen. – piphonom