Невозможно создать тестовое приложение C++ с протобуфом Google
Я пытаюсь собрать пример приложения C++ protobuf с CMake. Но компоновщик не может найти некоторые методы, связанные с protobuf.
Я использую пример.proto файла из руководства разработчика. Но когда компоновщик пытается создать объектный файл для кода C++, сгенерированного protobuf, у меня возникает много ошибок, подобных этой:
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*)'
Я использую Protobuf 2.6.1, собранный сам с GCC 4.8.4. Пример приложения создается CMake в QTCreator с набором инструментов QT 5.5.1 и GCC 4.8.4. Вот мой 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)
Спасибо за помощь!
1 ответ
Решение
Проблема была в пути поиска компоновщика. Линкер пытался использовать libprotobuf из дистрибутива ОС (версия 8.0.0) вместо созданной мной lib (версия 9.0.1).