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

news2024/10/7 18:24:19

本文是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博客

测试结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1015040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二章 进程与线程 七、处理机调度(概念、层次)

目录 一、基本概念 二、三个层次 1、高级调度(作业调度) 2、低级调度(进程调度/处理机调度) 3、中级调度(内存调度) 三、三次调度的联系、对比 四、七状态模型 五、总结 一、基本概念 当有一堆任务…

利用群论来研究魔方

文章灵感来源于: 魔方与群论(二)(交换子牛啤!) - 知乎并参考了:https://www.gap-system.org/Doc/Examples/rubik.html使用了这里的小程序:Cubie 先汇制一张,魔方图 ----…

MySQL数据库upsert使用

本文翻译自:MySQL UPSERT - javatpoint,并附带自己的一些理解和使用经验. MySQL UPSERT UPSERT是数据库管理系统管理数据库的基本功能之一,它允许数据库操作语言在表中插入一条新的数据或更新已有的数据。UPSERT是一个原子操作,…

手刻 Deep Learning -第壹章-PyTorch入门教学-基础概念与再探线性回归

一、前言 本章会需要 微分、线性回归与矩阵的基本观念 这次我们要来做 PyTorch 的简单教学,我们先从简单的计算与自动导数( auto grad / 微分 )开始,使用优化器与误差计算,然后使用 PyTorch 做线性回归,还有…

office mac苹果办公软件安装包安装教程详解

软件下载 软件:mac office版本:2021语言:简体中文大小:4.27G安装环境:mac硬件要求:CPU2.0GHz 内存4G(或更高)下载通道 百度网盘 https://pan.baidu.com/s/1WGSB-icELUxweFkI8iIbzA 首先&#…

恒源云GPU使用tensorboard || 以OpenMMLab系列为例 || 定时复制可视化日志

序言 在训练过程中使用可视化工具向来是很有效的。相比于shell中的输出,可视化能够更好地向我们展现在训练过程中各项指标的变化。 但是,由于深度学习所需要的设备性能要求较高,我们常常使用云GPU进行训练。但是一些云平台的可视化工具让人摸…

2023国赛B题:多波束测线问题 评阅要点完整分析

本文所有分析仅代表个人观点,不代表官方,仅供参考 制作人:川川徒弟 demoo CSDN:川川菜鸟公众号:川川带你学AI 全文采用非编程做法  需要工具: geogebra、matlab工具箱   注: 本文全文不考虑…

02 java ---- Android 基础app开发

目录 相对布局 显示一个美女 显示两个美女 安卓APP启动过程 安卓布局控件 常用布局之相对布局 常用布局之相对布局 padding和margin 按键美化 常用布局之线性布局 安卓按键响应的几种方式 直接设置按键的onClick绑定的函数 自定义类实现按键监听事件的接口 匿名内…

字节一面:说说var、let、const之间的区别

前言 最近博主在字节面试中遇到这样一个面试题,这个问题也是前端面试的高频问题,作为一名前端开发工程师,熟练掌握js是我们的必备技能,var、let、const之间的区别我们也得熟练掌握,博主在这给大家细细道来。 &#x1f…

Linux驱动中断与时间篇——高精度定时器hrtimer

文章目录 前言相关接口使用示例单次定时循环定时 前言 低分辨率定时器是用jiffies来定时的,所以会受到HZ影响,如果HZ为200,代表每秒种产生200次中断,那一个jiffies就需要5毫秒,所以精度为5毫秒。 如果精度需要达到纳秒…

如何实现一个简单的Promise/A+规范的Promise库?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Promise/A规范的Promise⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚…

uni-app:通过ECharts实现数据可视化-如何引入项目

效果 引入文件位置 代码 <template><view id"myChart"></view> </template> <script> import echarts from /static/js/echarts.js // 引入文件 export default {mounted() {// 初始化EChartsconst myChart echarts.init(document…

【JVM 内存结构丨堆】

堆 定义内存分配特点:分代结构对象分配过程Full GC /Major GC 触发条件引用方式堆参数堆内存实例 主页传送门&#xff1a;&#x1f4c0; 传送 定义 JVM&#xff08;Java Virtual Machine&#xff09;堆是Java应用程序运行时内存管理的重要组成部分之一。堆内存用于存储Java对象…

如何区分和选择EML、DML两种激光器

EML&#xff08;External Cavity Laser&#xff09;和DML&#xff08;Distributed Feedback Laser&#xff09;两种激光器在光模块中都扮演着重要的角色&#xff0c;用于光通信和其他光电子应用。本文跟随易天光通信来了解一下它们在光模块中的应用吧&#xff01; 一、什么是E…

excel中的引用与查找函数篇3

1、INDEX(array,row_num,[col_num])&#xff1a;获取指定范围中指定行号和列号对应的数据 index(查询范围,行号,列号) 行号和列号是相对选中查询范围来写的&#xff1a;分别把第二行第三列的数据和第四行第二列的数据查找出来。 数据是单行或单列&#xff0c;后面只需要给一个参…

C【文件操作】

1. 什么是文件 磁盘上的文件是文件。 但是在程序设计中&#xff0c;我们一般谈的文件有两种&#xff1a;程序文件、数据文件&#xff08;从文件功能的角度来分类的&#xff09;。 1.1 程序文件 包括源程序文件&#xff08;后缀为.c&#xff09;,目标文件&#xff08;windows环…

Golang Array 数组使用注意事项和细节

在go数组当中&#xff0c;长度是数据类型的一部分 [3]int *[3]int 数组使用注意事项和细节 1) 数组是多个相同类型数据的组合&#xff0c;一个数组一旦声明/定义了&#xff0c;其长度是固定的&#xff0c;不能动态变化 var a [3]int a[0] 1.1 这样是不行的&#xff0c;必…

“对象创建”模式

通过“对象创建”模式绕开new&#xff0c;来避免对象创建 (new) 过程中所导致的紧耦合(依赖具体类)从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 典型模式 Factory MethodAbstract FactoryPrototypeBuilder Factory Method 动机 (Motivation) 在软件系统中&am…

【数据结构】二叉树的层序遍历(四)

目录 一&#xff0c;层序遍历概念 二&#xff0c;层序遍历的实现 1&#xff0c;层序遍历的实现思路 2&#xff0c;创建队列 Queue.h Queue.c 3&#xff0c;创建二叉树 BTree.h BTree.c 4&#xff0c;层序遍历的实现 一&#xff0c;层序遍历概念 层序遍历&#xff1a;除了先序…

Day981.OAuth 2.0的工作流程与安全问题 -OAuth 2.0

OAuth 2.0的工作流程与安全问题 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于OAuth 2.0的工作流程与安全问题的内容。 一、OAuth 2.0 工作流程串讲 OAuth 2.0 是一种授权协议&#xff0c;这种协议可以让第三方软件代表用户去执行被允许的操作。 那么&#xff0c;…