无法使用Google的protobuf构建测试C ++应用程序

时间:2016-08-25 16:13:18

标签: c++ gcc cmake protocol-buffers

我正在尝试使用CMake构建示例C ++ protobuf应用程序。但是链接器找不到与protobuf相关的一些方法。

我使用来自developers guide的示例.proto文件。但是当链接器尝试为protobuf生成的C ++代码构建目标文件时,我有很多错误,如下所示:

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。示例应用程序由Qakereator中的CMake和QT 5.5.1 Toolset和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 个答案:

答案 0 :(得分:0)

问题出在链接器搜索路径中。 Linker试图使用OS distributon(版本8.0.0)中的libprotobuf而不是我构建的lib(版本9.0.1)。