导入 Protobuf 时出现 RuntimeLibrary 不匹配错误(Win64、CMake)

loy*_*d.f 2 c++ cmake dynamic-linking protocol-buffers static-linking

我有一个项目,其架构如下:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 projects\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 io\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data.proto\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 generated\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data.pb.cc\n\xe2\x94\x82   \xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 data.pb.h\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 service\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.cpp\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dll_project_1\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dll_project_2\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 third_party\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 protobuf\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 include\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib\n
Run Code Online (Sandbox Code Playgroud)\n

项目目录包含我的所有项目(显然):

\n
    \n
  • service是可执行项目
  • \n
  • io一个静态库,我只想编辑其中的“.proto”文件
  • \n
  • 其他项目基本上都是一些共享库
  • \n
\n

Third_party /protobuf包含此处列出的所有 protobuf 安装文件。请注意,为了安装 protobuf,我遵循了此处的所有说明(在 Debug x64 和 Release x64 中均使用 Visual Studio 进行编译和安装)。

\n

具体CMakeLists.txt如下:

\n

./CMakeLists.txt

\n
set(THIRD_PARTY ${CMAKE_CURRENT_SOURCE_DIR}/third_party)\nset(PROTOBUF ${THIRD_PARTY}/protobuf)\n\nset(Protobuf_USE_STATIC_LIBS ON)\n\ninclude(${PROTOBUF}/cmake/protobuf-config.cmake)\ninclude(${PROTOBUF}/cmake/protobuf-module.cmake)\ninclude(${PROTOBUF}/cmake/protobuf-options.cmake)\ninclude(${PROTOBUF}/cmake/protobuf-targets.cmake)\n\nfind_package(Protobuf REQUIRED HINTS ${PROTOBUF})\ninclude_directories(${Protobuf_INCLUDE_DIRS})\nlink_libraries(${Protobuf_LIBRARIES})\n
Run Code Online (Sandbox Code Playgroud)\n

./projects/CMakeLists.txt

\n
add_subdirectory(io)\nadd_subdirectory(dll_project_1)\nadd_subdirectory(dll_project_2)\n\nadd_subdirectory(service)\n
Run Code Online (Sandbox Code Playgroud)\n

./projects/io/CMakeLists.txt

\n
set(PROTO\n    data.proto\n)\n\nset(PROTO_GENERATED\n    generated/data.pb.cc\n    generated/data.pb.h\n)\n\nsource_group(Proto FILES ${PROTO})\nsource_group(Generated FILES ${PROTO_GENERATED})\n\nadd_library(IO STATIC ${PROTO} ${PROTO_GENERATED})\n
Run Code Online (Sandbox Code Playgroud)\n

./projects/service/CMakeLists.txt

\n
add_executable(Service main.cpp)\n\ntarget_link_libraries(Service\n    IO\n    Dll1\n    Dll2\n)\n
Run Code Online (Sandbox Code Playgroud)\n

现在 cmake 构建解决方案就可以了,我想做的就是:

\n
#include "../io/generated/data.pb.h"\n\nint main()\n{\n    Data::SomeData d;\n    d.set_value(0.0);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我尝试编译时,出现很多 LNK2038 和 LNK2005 错误:

\n
6>main.cpp\n6>libprotobufd.lib(common.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(common.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(common.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(coded_stream.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(coded_stream.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(coded_stream.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(arena.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(arena.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(arena.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(message_lite.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(message_lite.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(message_lite.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(parse_context.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(parse_context.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(parse_context.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(generated_message_util.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(generated_message_util.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(generated_message_util.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(unknown_field_set.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(unknown_field_set.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(unknown_field_set.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(generated_message_reflection.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(generated_message_reflection.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(generated_message_reflection.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(message.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(message.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(message.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(reflection_ops.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(reflection_ops.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(reflection_ops.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(wire_format.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(wire_format.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(wire_format.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(status.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(status.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(status.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(int128.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(int128.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(int128.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(stringpiece.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(stringpiece.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(stringpiece.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(strutil.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(strutil.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(strutil.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(zero_copy_stream.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(zero_copy_stream_impl_lite.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(zero_copy_stream.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(zero_copy_stream.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(zero_copy_stream_impl_lite.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(zero_copy_stream_impl_lite.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(zero_copy_stream_impl.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(zero_copy_stream_impl.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(zero_copy_stream_impl.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(structurally_valid.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(structurally_valid.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(structurally_valid.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(repeated_field.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(repeated_field.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(repeated_field.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(wire_format_lite.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(wire_format_lite.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(wire_format_lite.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(extension_set.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(extension_set.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(extension_set.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(descriptor.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(descriptor.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(descriptor.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(arenastring.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(arenastring.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(arenastring.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(extension_set_heavy.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(extension_set_heavy.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(extension_set_heavy.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(map_field.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(map_field.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(map_field.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(io_win32.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(io_win32.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(io_win32.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(implicit_weak_message.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(implicit_weak_message.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(implicit_weak_message.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(stringprintf.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(stringprintf.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(stringprintf.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(text_format.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(text_format.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(text_format.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(descriptor.pb.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(descriptor.pb.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(descriptor.pb.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(tokenizer.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(tokenizer.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(tokenizer.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(descriptor_database.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(descriptor_database.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(descriptor_database.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(dynamic_message.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(dynamic_message.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(dynamic_message.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(substitute.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(substitute.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(substitute.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(strtod.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(strtod.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(strtod.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(any_lite.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(any_lite.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(any_lite.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(map.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(map.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(map.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libprotobufd.lib(any.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libprotobufd.lib(any.obj) : warning LNK4099: PDB \'libprotobuf.pdb\' was not found with \'libprotobufd.lib(any.obj)\' or at \'C:\\dev\\MyProject\\build\\Debug\\libprotobuf.pdb\'; linking object as if no debug info\n6>libcpmtd.lib(locale0.obj) : error LNK2038: mismatch detected for \'RuntimeLibrary\': value \'MTd_StaticDebug\' doesn\'t match value \'MDd_DynamicDebug\' in main.obj\n6>libcpmtd.lib(locale0.obj) : erro

loy*_*d.f 5

好吧,和往常一样,我需要提出一个困扰我几个小时的问题,然后几分钟后我自己找到解决方案......

答案就在这里。只需添加-Dprotobuf_MSVC_STATIC_RUNTIME=OFFcmake 命令来构建解决方案(此步骤):

cmake -G "Visual Studio 16 2019" -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -DCMAKE_INSTALL_PREFIX=../../../install ../..
Run Code Online (Sandbox Code Playgroud)