You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022 C++使用NuGet Or-Tools遇LNK2019未解析外部符号错误求助

使用C++结合Or-Tools在VS2022中构建Debug x64项目时出现LNK2019未解析外部符号错误

我正学习用C++结合Or-Tools解决问题,在VS2022中复制Google Or-Tools官网的LinearProgrammingExample.cpp创建了项目,并且安装了Google.OrTools.runtime.win-x64 NuGet包,但构建Debug x64版本时出现多个LNK2019未解析外部符号错误,最终触发LNK1120致命错误,详细构建日志如下:

Build started...
1>------ Build started: Project: test, Configuration: Debug x64 ------
1>simple_mip_program.cpp
1>C:\or-tools\ortools\linear_solver\linear_solver.h(305): warning C4267: 'return': conversion from 'size_t' to 'int', possible loss of data
1>C:\or-tools\ortools\linear_solver\linear_solver.h(375): warning C4267: 'return': conversion from 'size_t' to 'int', possible loss of data
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: class absl::Duration & __cdecl absl::Duration::operator-=(class absl::Duration)" (??ZDuration@absl@@QEAAAEAV01@V01@@Z) referenced in function "class absl::Duration __cdecl absl::operator-(class absl::Duration,class absl::Duration)" (??Gabsl@@YA?AVDuration@0@V10@0@Z)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "__int64 __cdecl absl::ToInt64Milliseconds(class absl::Duration)" (?ToInt64Milliseconds@absl@@YA_JVDuration@1@@Z) referenced in function "public: __int64 __cdecl operations_research::MPSolver::wall_time(void)const " (?wall_time@MPSolver@operations_research@@QEBA_JXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "class absl::Time __cdecl absl::Now(void)" (?Now@absl@@YA?AVTime@1@XZ) referenced in function "public: class absl::Duration __cdecl operations_research::MPSolver::DurationSinceConstruction(void)const " (?DurationSinceConstruction@MPSolver@operations_research@@QEBA?AVDuration@absl@@XZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: __cdecl google::LogMessage::LogMessage(char const *,int)" (??0LogMessage@google@@QEAA@PEBDH@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: __cdecl google::LogMessage::LogMessage(char const *,int,int)" (??0LogMessage@google@@QEAA@PEBDHH@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: __cdecl google::LogMessage::~LogMessage(void)" (??1LogMessage@google@@QEAA@XZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl google::LogMessage::stream(void)" (?stream@LogMessage@google@@QEAAAEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: __cdecl google::LogMessageFatal::LogMessageFatal(char const *,int)" (??0LogMessageFatal@google@@QEAA@PEBDH@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: __cdecl google::LogMessageFatal::~LogMessageFatal(void)" (??1LogMessageFatal@google@@QEAA@XZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: static class operations_research::MPSolver * __cdecl operations_research::MPSolver::CreateSolver(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?CreateSolver@MPSolver@operations_research@@SAPEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: class operations_research::MPVariable * __cdecl operations_research::MPSolver::MakeIntVar(double,double,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?MakeIntVar@MPSolver@operations_research@@QEAAPEAVMPVariable@2@NNAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: class operations_research::MPConstraint * __cdecl operations_research::MPSolver::MakeRowConstraint(double,double,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?MakeRowConstraint@MPSolver@operations_research@@QEAAPEAVMPConstraint@2@NNAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: enum operations_research::MPSolver::ResultStatus __cdecl operations_research::MPSolver::Solve(void)" (?Solve@MPSolver@operations_research@@QEAA?AW4ResultStatus@12@XZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: __int64 __cdecl operations_research::MPSolver::iterations(void)const " (?iterations@MPSolver@operations_research@@QEBA_JXZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: __int64 __cdecl operations_research::MPSolver::nodes(void)const " (?nodes@MPSolver@operations_research@@QEBA_JXZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: void __cdecl operations_research::MPObjective::SetCoefficient(class operations_research::MPVariable const * const,double)" (?SetCoefficient@MPObjective@operations_research@@QEAAXQEBVMPVariable@2@N@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: void __cdecl operations_research::MPObjective::SetOptimizationDirection(bool)" (?SetOptimizationDirection@MPObjective@operations_research@@QEAAX_N@Z) referenced in function "public: void __cdecl operations_research::MPObjective::SetMaximization(void)" (?SetMaximization@MPObjective@operations_research@@QEAAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: double __cdecl operations_research::MPObjective::Value(void)const " (?Value@MPObjective@operations_research@@QEBANXZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: double __cdecl operations_research::MPVariable::solution_value(void)const " (?solution_value@MPVariable@operations_research@@QEBANXZ) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>simple_mip_program.obj : error LNK2019: unresolved external symbol "public: void __cdecl operations_research::MPConstraint::SetCoefficient(class operations_research::MPVariable const * const,double)" (?SetCoefficient@MPConstraint@operations_research@@QEAAXQEBVMPVariable@2@N@Z) referenced in function "void __cdecl operations_research::SimpleMipProgram(void)" (?SimpleMipProgram@operations_research@@YAXXZ)
1>C:\test\or-tools\test\x64\Debug\test.exe : fatal error LNK1120: 20 unresolved externals
1>Done building project "test.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build started at 6:48 PM and took 09.493 seconds ==========

解决方案

  • 重新安装匹配的NuGet包:卸载当前的Google.OrTools.runtime.win-x64包,重新安装时确认选择的版本支持Debug x64配置,安装过程中确保无网络中断或报错。
  • 检查链接器的库文件配置:
    1. 右键项目 → 属性 → 配置属性 → 链接器 → 输入 → 附加依赖项,确认添加了Or-Tools的Debug版本库文件(如ortoolsd.lib,具体名称以NuGet包内的Debug库为准)。
    2. 进入链接器 → 常规 → 附加库目录,添加NuGet包中Debug库的路径,通常路径为packages\Google.OrTools.runtime.win-x64.x.x.x\runtimes\win-x64\native\debug(替换x.x.x为实际安装的版本号)。
  • 统一运行时库设置:右键项目 → 属性 → 配置属性 → C/C++ → 代码生成 → 运行时库,Debug模式下选择多线程调试(/MTd)或多线程调试 DLL(/MDd),需与Or-Tools编译时使用的运行时库一致。如果不确定,可两种选项分别尝试。
  • 验证头文件路径:确认项目的附加包含目录正确指向Or-Tools头文件所在路径,避免因头文件版本不匹配导致符号定义不一致。
  • 测试Release版本:先构建Release x64版本,如果Release能正常运行,说明问题出在Debug配置的库链接上,重点检查Debug相关的库文件和配置。

内容的提问来源于stack exchange,提问作者nyislander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:02:00