Windows C++ 环境下 eigen、osqp、osqp-eigen安装教程

本文是Windows环境下安装eigen、osqp、osqp-eigen的一个简单教程。

osqp是用于二次规划的一种求解器,提供包括C、Matlab、Python等在内的接口,但是不包含C++接口。为了能在C++ 中使用osqp,可以使用osqp-eigen接口进行调用。

第一步:安装eigen

eigen的安装比较简单。

1)github下载源码并解压,地址:Eigen

如图,下载最新版的zip版本即可。

2)在系统环境变量中添加eigen的地址

3)在VS中包含eigen

至此,eigen安装结束

第二步:安装osqp

osqp的安装可以完全参照osqp的官网进行,

官网地址:Build from sources --- OSQP documentation

如下图,按照步骤1到5操作即可成功安装osqp。

复制代码
git clone https://github.com/osqp/osqp
cd osqp
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
cmake --build .
cmake --build . --target install

需要注意的是:

1)如果之前电脑没装过步骤1中的软件,安装TDM-GCC和CMake的时候勾选自动添加到系统环境变量的选项,如果忘记勾选也没关系,后续记得自己手动添加一下。

2)下载和编译的时候我都没改地址,因此都是在C盘操作的,在我电脑上编译后的OSQP位置在C:\Program Files (x86)\osqp

第三步:安装osqp-eigen

osqp-eigen的官网地址:GitHub - robotology/osqp-eigen: Simple Eigen-C++ wrapper for OSQP library

复制代码
git clone https://github.com/robotology/osqp-eigen.git
cd osqp-eigen
mkdir build
cd build
cmake -G "MinGW Makefiles" .. 
mingw32-make
mingw32-make install

安装成功后的界面如下图,安装位置默认还是在C盘:C:\Program Files (x86)\OsqpEigen

在编译过程中可能会报错,出现找不到FindEigen3.cmake这个错误,此时只需要去之前下载的eigen文件夹下找到 eigen-3.4.0\cmake\FindEigen3.cmake 文件,并将其复制到CMake的安装目录下的CMake\share\cmake-3.27\Modules即可。

特别注意的是,每次重新编译之前都记得删除原先build文件夹下的文件。

第四步:osop-eigen的调用

1)在 VC++目录\包含目录 中添加eigen和osqp-eigen的include地址

2)添加 VC++目录\库目录 中添加eigen和osqp-eigen的lib地址

3)添加附加链接库

4)测试案例:

测试案例参见博客:

osqp-eigen使用记录_Oxalate-c的博客-CSDN博客

测试结果:

相关推荐
世转神风-4 分钟前
qt-windows用户点击.exe,报错:缺少libgcc_s_seh-1.dll
c++·qt
慕容青峰8 分钟前
【牛客周赛 107】E 题【小苯的刷怪笼】题解
c++·算法·sublime text
羑悻的小杀马特35 分钟前
C++多线程同步工具箱:call_once精准触发、lock_guard/unique_lock智能管理,打造无死锁程序!
c++·多线程·死锁·lock_guard·unique_lock·call_once
电子_咸鱼36 分钟前
【QT——信号和槽(1)】
linux·c语言·开发语言·数据库·c++·git·qt
想唱rap42 分钟前
Linux下进程的控制
linux·运维·服务器·c++·算法
Queenie_Charlie1 小时前
小明统计数组
数据结构·c++·set
郝学胜-神的一滴1 小时前
Separate Buffer、InterleavedBuffer 策略与 OpenGL VAO 深度解析
开发语言·c++·程序人生·算法·游戏程序·图形渲染
承渊政道3 小时前
C++学习之旅【C++类和对象(下)】
c++·学习·visual studio
枫叶丹43 小时前
【Qt开发】Qt窗口(九) -> QFontDialog 字体对话框
c语言·开发语言·数据库·c++·qt
旖旎夜光10 小时前
多态(11)(下)
c++·学习