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\nRun Code Online (Sandbox Code Playgroud)\n项目目录包含我的所有项目(显然):
\nThird_party /protobuf包含此处列出的所有 protobuf 安装文件。请注意,为了安装 protobuf,我遵循了此处的所有说明(在 Debug x64 和 Release x64 中均使用 Visual Studio 进行编译和安装)。
\n具体CMakeLists.txt如下:
./CMakeLists.txt
\nset(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})\nRun Code Online (Sandbox Code Playgroud)\n./projects/CMakeLists.txt
\nadd_subdirectory(io)\nadd_subdirectory(dll_project_1)\nadd_subdirectory(dll_project_2)\n\nadd_subdirectory(service)\nRun Code Online (Sandbox Code Playgroud)\n./projects/io/CMakeLists.txt
\nset(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})\nRun Code Online (Sandbox Code Playgroud)\n./projects/service/CMakeLists.txt
\nadd_executable(Service main.cpp)\n\ntarget_link_libraries(Service\n IO\n Dll1\n Dll2\n)\nRun 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}\nRun Code Online (Sandbox Code Playgroud)\n但是当我尝试编译时,出现很多 LNK2038 和 LNK2005 错误:
\n6>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
好吧,和往常一样,我需要提出一个困扰我几个小时的问题,然后几分钟后我自己找到解决方案......
答案就在这里。只需添加-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)