使用ExternalProject_Add引入Protobuf库后,MSVC编译出现链接错误的解决求助
ExternalProject_Add引入Protobuf库后,MSVC编译出现链接错误的解决求助
我尝试在项目中通过CMake的ExternalProject_Add来引入Protobuf,之后用target_include_directories和target_link_libraries配置依赖。但在MSVC里编译解决方案时,出现了大量链接错误,其中一个错误示例如下:
symbol "struct absl::lts_20230125::from_chars_result __cdecl absl::lts_20230125::from_chars(char const *,char const *,double &,enum absl::lts_20230125::chars_format)" (?from_chars@lts_20230125@absl@@YA?AUfrom_chars_result@12@PEBD0AEANW4chars_format@12@@Z) referenced in function "double __cdecl google::protobuf::io::NoLocaleStrtod(char const *,char * *)" (?NoLocaleStrtod@io@protobuf@google@@YANPEBDPEAPEAD@Z)
以下是我配置ExternalProject_Add引入Protobuf的代码:
ExternalProject_Add(protobuf PREFIX protobuf SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../grpc/third_party/protobuf" CMAKE_CACHE_ARGS -Dprotobuf_BUILD_TESTS:BOOL=OFF -Dprotobuf_WITH_ZLIB:BOOL=OFF -Dprotobuf_ABSL_PROVIDER:STRING=module -Dutf8_range_DIR:STRING=${CMAKE_CURRENT_BINARY_DIR}/utf8_range/lib/cmake/utf8_range -Dprotobuf_MSVC_STATIC_RUNTIME:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/protobuf DEPENDS utf8_range )
我把Protobuf添加到项目中的配置代码如下:
add_dependencies(${PROJECT_NAME} protobuf) target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_BINARY_DIR}/protobuf/include) target_link_libraries(${PROJECT_NAME} debug ${CMAKE_CURRENT_BINARY_DIR}/protobuf/lib/libprotobufd.lib optimized ${CMAKE_CURRENT_BINARY_DIR}/protobuf/lib/libprotobuf.lib )
还有另一个类似的链接错误:
external symbol "private: void __cdecl absl::lts_20230125::log_internal::LogMessage::CopyToEncodedBuffer(class absl::lts_20230125::string_view,enum absl::lts_20230125::log_internal::LogMessage::StringType)" (?CopyToEncodedBuffer@LogMessage@log_internal@lts_20230125@absl@@AEAAXVstring_view@34@W4StringType@1234@@Z)
实在搞不定这些错误,希望能得到大家的帮助。
备注:内容来源于stack exchange,提问作者Vadim
相关产品推荐
相关产品推荐

