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

构建osqp-eigen库遇LNK2019错误,解决方案:更换OSQP至0.6.3版本

构建osqp-eigen库时的链接错误及解决方法

问题背景

我在C++环境中构建和安装osqp-eigen库,目标是实现类似MATLAB quadprog() 的二次规划功能,但构建时遇到Eigen配置、64位整数编译的OSQP路径相关问题。

CMake构建成功日志

克隆库后,我创建build文件夹并在命令行运行 cmake ..,构建成功:

-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.37.32822.0
-- The CXX compiler identification is MSVC 19.37.32822.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (9.9s)
-- Generating done (0.1s)
-- Build files have been written to: C:/osqp/osqp-Eigen/build

Visual Studio构建错误日志

打开OSqp-eigen.sln在Visual Studio中构建时,出现以下链接错误:

Build started...
1>------ Build started: Project: ZERO_CHECK, Configuration: Debug x64 ------
1>1>Checking Build System
2>------ Build started: Project: OsqpEigen, Configuration: Debug x64 ------
2>Building Custom Rule C:/osqp/osqp-Eigen/CMakeLists.txt
2>Data.cpp
2>Settings.cpp
2>Solver.cpp
2>Debug.cpp
2>Generating Code...
2>Auto build dll exports
2>   Creating library C:/osqp/osqp-Eigen/build/Debug/OsqpEigend.lib and object C:/osqp/osqp-Eigen/build/Debug/OsqpEigend.exp
2>Data.obj : error LNK2019: unresolved external symbol csc_spfree referenced in function "public: void __cdecl OsqpEigen::Data::clearHessianMatrix(void)" (?clearHessianMatrix@Data@OsqpEigen@@QEAAXXZ)
2>Solver.obj : error LNK2019: unresolved external symbol csc_spalloc referenced in function "bool __cdecl OsqpEigen::SparseMatrixHelper::createOsqpSparseMatrix<class Eigen::SparseMatrix<double,0,int> >(class Eigen::SparseCompressedBase<class Eigen::SparseMatrix<double,0,int> > const &,struct OSQPCscMatrix * &)" (??$createOsqpSparseMatrix@V?$SparseMatrix@N$0A@H@Eigen@@@SparseMatrixHelper@OsqpEigen@@YA_NAEBV?$SparseCompressedBase@V?$SparseMatrix@N$0A@H@Eigen@@@Eigen@@AEAPEAUOSQPCscMatrix@@@Z)
2>C:\osqp\osqp-Eigen\build\Debug\OsqpEigend.dll : fatal error LNK1120: 2 unresolved externals
2>Done building project "OsqpEigen.vcxproj" -- FAILED.
3>------ Build started: Project: ALL_BUILD, Configuration: Debug x64 ------
3>Building Custom Rule C:/osqp/osqp-Eigen/CMakeLists.txt
========== Build: 2 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build started at 10:49 ق.ظ and took 08.958 seconds ========== 

解决方法

查阅OSQP的公开issue未找到有效方案,后续在osqp-eigen的issue中找到解决办法:必须使用OSQP最新发布版本0.6.3。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:17:07