在Win下Visual Studio配置Eigen

2023-05-16

在Win下Visual Studio配置Eigen

最近在使用Visual Studio时想使用一下著名的矩阵运算库:Eigen,摸索了一下如何在Visual Studio中配置。

1 下载Eigen源码

直接到Eigen官网Eigen,这里我选择3.3.8版本

image-20211129123551193

2 在VS中创建一个空项目

这里先创建一个空项目

image-20211129123804527

这里演示选择空模板

image-20211129123855337

这里注意,一个解决方案中可以包含多个项目,如果勾选了将解决方案和项目放在同一目录,在这个解决方案里再添加项目,项目的文件夹就也在Desktop目录下,不便于管理。不勾选的话相当于在Desktop/下创建一个Solution文件夹,存放解决方案,Solution/中同时又创建了Project1文件夹,存放Project1的项目文件。在添加项目时就会在Solution/目录下,而不是Desktop/。(这里以下图在Desktop目录下的情况说明问题)

image-20211129131401163

创建完成后会进入VS中,VS中解决资源管理器默认是展示头文件、源文件这些,如下图。

image-20211129132214984

但我们在做项目时,往往按照src、include、config、deps这些文件夹去管理工程文件,因此需要做一些修改。

首先在项目目录下创建src、include、deps、config等文件夹,src存放源文件、include存放头文件、deps用于放置外部库,这里我们的Eigen就解压存放到在这里,最终创建好的目录如下(为了展示文件结构用vs code打开的,这里只要注意eigen的所有文件在deps/eigen目录下,有时候解压软件会创建两层文件夹):

image-20211129132142924

打开显示所有文件,就可以看到每个工程文件夹了

image-20211129125126088

3 设置项目属性,添加Eigen

直接在项目上右键–>属性,然后在属性页上选择配置–>所有配置平台–>所有平台,我这里项目需要还改了解决方案平台为x64、C17标准。

image-20211129132339927

现在在属性配置中有常规、高级等标签,而我们需要在C/C++标签下进行配置,如下图

image-20211129125822684

那么怎么调出这个标签呢?具体方法如下:

在src中随便添加一个C++文件,这里命名为test_eigen.cpp,然后再右键项目属性,就会出现C/C++标签了。

image-20211129132557190 image-20211129125755925

进入标签页后,可以看到第一个是附加包含目录,这里将我们的Eigen目录添加到这里就可以了。为了便于项目合作,这里应该是相对路径。如下,这里把include也加入进去。

image-20211129130427728

4 测试

完成上述步骤后,在刚刚创建的test_eigen.cpp中编写一段代码进行测试:

test_eigen.cpp

#include <iostream>
#include <Eigen\Dense>
 
using namespace std;
 
typedef Eigen::Matrix<int, 3, 3> Matrix3i;
 
int main()
{
	/*
	Matrix的初始化方法
	Eigen::Matrix<int, 3, 3> 
	int 代表Matrix的数据类型,3,3 分别代表 rows, cols
	Matrix3i m1;
	m1(0,0) = 1
	m1(0,1) = 2
	m1(0,2) = 3
	...
	或者用 m1 << 1,2,3 ...
	*/
 
	Matrix3i m1;
	m1 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
	cout << "m1 = \n" << m1 << endl;
 
	Matrix3i m2;
	m2 << 1, 0, 0, 0, 1, 0, 0, 0, 1;
	cout << "m2 = \n" << m2 << endl;
 
	cout << "m1 * m2 = \n" << (m1 * m2) << endl;
 
	return 0;
}

运行一下,可以正常输出,表明没有问题。

image-20211129130913902

5 多个项目情况

如果解决方案中存在多个项目A、B、C等,假设eigen源文件在A项目的deps/eigen中,那B、C项目如何配置呢?

这里我们再新建一个项目:右键解决方案,添加–>新建项目,这里选择默认空项目,命名为Project2

image-20211129132638800

创建后如下:

image-20211129133035986

同样,在Project文件夹中也创建src、include等文件夹,但这里我们不创建deps了,我们想使用Project1/deps中的Eigen。

首先,右键Project2–>属性,进入到C/C++标签页下,如果属性页中没有C/C++,那么同样在Project2/src创建一个.cpp文件即可。

然后添加如下内容:

image-20211129133347442

这里$(ProjectDir)表示Project2这个文件夹,即当前项目的项目文件夹,如果还有一个Project3,那么这个就是Project3对应的文件夹。

测试

在Project/src中添加一个测试.cpp文件,同时右键Project2,设置为启动项

image-20211129133657169

test_eigen.cpp

#include <iostream>
#include <Eigen\Dense>

using namespace std;

typedef Eigen::Matrix<int, 3, 3> Matrix3i;

int main()
{
	/*
	Matrix的初始化方法
	Eigen::Matrix<int, 3, 3>
	int 代表Matrix的数据类型,3,3 分别代表 rows, cols
	Matrix3i m1;
	m1(0,0) = 1
	m1(0,1) = 2
	m1(0,2) = 3
	...
	或者用 m1 << 1,2,3 ...
	*/
	cout << "**********Project2********" << endl;
	Matrix3i m1;
	m1 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
	cout << "m1 = \n" << m1 << endl;

	Matrix3i m2;
	m2 << 1, 0, 0, 0, 1, 0, 0, 0, 1;
	cout << "m2 = \n" << m2 << endl;

	cout << "m1 * m2 = \n" << (m1 * m2) << endl;

	return 0;
}

这里为了与Project1区别,会先输出一行Project2

运行一下,输出:

image-20211129133823618

证明没有问题。

6 总结

本文详细介绍了如何在VS中添加外部库Eigen的过程,对于 其他库,方法应该也是类似的。

欢迎关注作者个人网站
以及GzH: 智能之欣
B乎、B 站:智能之欣
作者不定期分享技术、技巧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Win下Visual Studio配置Eigen 的相关文章

  • Microsoft Store无法打开解决方法

    Microsoft Store 无法启动 网络出错问题解决 Microsoft Store 无法启动 一直在转圈 最后显示网络出错的问题 解决方法 1 通过搜索打开 gt 控制面板 2 打开 gt 网络和Internet 3 打开 gt I
  • Eigen库使用入门

    为了将Matlab写的运动学程序转化为C 所编写的dll 需要用用到矩阵库Eigen Eigen库是一个使用C 源码编写的矩阵库 基本上能满足计算中所需要用到的运算 下面介绍一些库的入门学习 1 首先是关于固定大小矩阵 向量的定义 初始化
  • 特征中的 typedef 与类中的 typedef

    我正在出于教育目的查看 Eigen 源代码 我注意到对于每个具体的类模板X在层次结构中 有一个internal traits
  • Eigen3 根据列条件选择行

    我的特征矩阵有一个二维矩阵 例如 122 443 544 456 0 9 324 435 5465 645 0 8 32 434 545 546 0 778 435 546 6565 656 0 6878 546 6565 656 3453
  • int p 不是 lpNorm

    中的常量表达式

    我写了这个函数 template
  • 稠密对称矩阵的特征有效类型

    Does Eigen http eigen tuxfamily org index php title Main Page有存储密集 固定大小 对称矩阵的有效类型吗 嘿 它们无处不在 IE 对于 N 9 它应该只存储 1 9 9 2 45
  • 调整 Eigen::Ref 大小的解决方法

    我想使用 Eigen Ref 来使用 Eigen Matrix 参数来实现非模板函数 我的问题是 在这些函数中 我可能必须调整 Eigen Ref 引用的矩阵的大小 我知道 一般而言 不应调整 Eigen Ref 的大小 因为它可以映射到表
  • 两个相似的位姿具有较大的相对欧拉角

    欧拉角表示的相似位姿有两种 s euler angle o1 0 000549608 3 1334 1 23193 s euler angle o2 0 0222646 3 10948 1 31032 但 Eigen 计算出的相对欧拉角为
  • Eigen Matrix 与 Numpy Array 乘法性能

    I read 在这个问题中 https stackoverflow com questions 10366054 c performance in eigen librar that eigen具有非常好的性能 但是 我尝试比较eigen
  • 使用特征库从旋转矩阵中获取横摇、俯仰和偏航

    我需要从旋转矩阵中提取横滚 俯仰 偏航角 并且我想确保我所做的事情是正确的 Eigen Matrix lt simFloat 3 1 gt rpy orientation toRotationMatrix eulerAngles 0 1 2
  • 如何在 CUDA 内核中使用 Eigen

    Eigen 是一个 C 线性代数库http eigen tuxfamily org http eigen tuxfamily org 使用基本数据类型 例如基本浮点数组 很容易 只需将其复制到设备内存并将指针传递给 cuda 内核即可 但是
  • 如何求解稀疏矩阵的线性方程 AX=b

    我有稀疏矩阵 A 120 000 120 000 和向量 b 120 000 我想使用 Eigen 库求解线性系统 AX b 我尝试按照文档进行操作 但总是出现错误 我还尝试将矩阵更改为稠密并求解系统 Eigen MatrixXd H N
  • 如何在使用 Eigen Library C++ 时删除特定行或列

    我正在为我的项目使用 Eigen 库 我正在搜索如何从特征中的给定矩阵中删除特定行或列 我没有成功 MatrixXd A X1 X2 X3 X4 Y1 Y2 Y3 Y4 Z1 Z2 Z3 Z4 A1 A2 A3 A4 MatrixXd At
  • 从稀疏矩阵中提取块作为另一个稀疏矩阵

    如何从a中提取一个块Eigen SparseMatrix
  • 从特征序列化分解矩阵(SparseLU 对象)

    我正在尝试解决Ax b其中矩阵 A 可以大到接近1M x 1M在大小上 是稀疏且对称的 但可能没有明确定义 问题是使用以下方法计算分解可能需要很长时间稀疏LU对象 http eigen tuxfamily org dox devel cla
  • 如何访问 C++ Eigen 数组中的多个元素?

    我想检索特征数组中的某些元素并将它们作为向量返回 我使用以下代码 Eigen ArrayXXi test test resize 5 5 test setRandom Eigen Matrix
  • Eigen static libaligned_free“双重释放或损坏”

    这是一个延续较早的帖子 https stackoverflow com questions 70788173 eigen static lib memory align 但这一次希望有一个更好的例子 设置向量时 这个简单的测试会崩溃 我正在
  • 查找 CMake 的包 Eigen3

    CMake 找不到我的Eigen3包裹 我设置了一个名为的环境变量 EIGEN3 INCLUDE DIR 指向路径所在的位置FindEigen3 cmake is 然后在 CMakelists txt 中我写道 find package E
  • 为什么选择 Eigen 作为 TensorFlow? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 TensorFlow白皮书提到使用了Eigen 是否有关于如何选择 Eigen 的公开解释 它们是在 T
  • RcppEigen - 从包中的内联函数到 .cpp 函数和“Map”

    一切似乎都在我的包中工作 但我想检查其步骤是否正确以及使用 Map 的内存使用情况 这是一个简单的示例 位于内联示例和fastLm 例子 这是一个内联函数 它取矩阵每一列的最大值 library Rcpp library inline li

随机推荐

  • STM32MP157开发-STM32CubeProgrammer-No DFU detected解决

    STM32MP157开发 STM32CubeProgrammer No DFU detected解决 xff0c 在开发时 xff0c 需要用STM32CubeProgrammer烧录固件 xff0c 但是按照官方文档 xff0c 安装后
  • Python正则表达式学习(5)——re.findall()

    re findall xff08 pattern xff0c string xff0c flags 61 0 xff09 返回字符串中模式的所有非重叠匹配 xff0c 作为字符串列表 字符串从左到右扫描 xff0c 并按照找到的顺序返回匹配
  • linux内核插入模块时 Unknown symbol in module

    编译驱动的时候碰到了 insmod error inserting 39 igb ko 39 1 Unknown symbol in module 的问题 xff0c 在网上看了下 xff0c 说是查看 dmesg tail 看输出信息中的
  • Linux路由器

    宽带上网已经不是什么新鲜事情 xff0c 人们对相关的网络器件已经不再陌生 xff0c 比如说常见的路由器 对于一般的网络用户 xff0c 他们能知道怎样使用路由器来上网 玩游戏等就已经感到很满足了 xff0c 通常情况下对路由器的深层技术
  • 树莓派linux驱动学习之hello world

    http blog csdn net hcx25909 article details 16860055 最近想学习一下linux驱动 xff0c 看了一些书和教学视频 xff0c 大概了解了一下 xff0c 不过要想深入 xff0c 肯定
  • 微信端口及协议分析

    http blog newxd com 7235 html 有朋友公司需求如下 xff0c 手机通过WIFI连接上网 xff0c 而老板要求 xff0c 员工使用手机只能上微信 xff0c 而不能上其他网页和看在线视频 上网搜索了微信使用协
  • git报错fatal: HTTP request failed

    1 在使用git pull git push git clone会报类似如下的错误 xff1a sudo git clone https github com pcduino a20 kernel fatal HTTP request fa
  • 树莓派2在U8300W平台上用pppd拨号时出现“pppd: The remote system is required to authenticate itself”

    利用pppd拨号 xff0c 首先需要调试好驱动 1 xff09 安装ppp sudo apt get install y ppp sudo apt get install y ppp dev sudo apt get install y
  • armv7架构下lubuntu系统apt-get安装ffmpeg方法

    What s up doc 17 08 2007 I think you have noticed the Google Ads I need that to pay the huge amount of bandwidth 10 05 2
  • shell脚本转换成二进制的可执行文件方法--加密

    http www 360doc com content 14 0507 14 10058718 375504586 shtml http www linuxidc com Linux 2014 12 110612 htm http www
  • Linux下jhead简介以及使用

    jhead 源代码下载地址 http www sentex net mwandel jhead locate r 34 io h 34 find usr include name 34 io h 34 一个现成更改照片时间的程式 jhead
  • Linux 内核和驱动开发工程师的发展前景怎么样

    或许这样的标题 xff0c 应该是由像Linus或Greg KH这样的大师级的高手才有资格写的吧 但是作为我来说 xff0c 也许我更想把这个标题作为一个疑问句来使用 xff0c 整理一下自己的认识 xff0c 用来勉励自己 xff0c 和
  • Linux awk 中 BEGIN 和 END 的使用方法

    1 awk的流程控制BEGIN和END http blog 51cto com 151wqooo 1309851 2 awk详解 http blog 51cto com 7177526 1387238
  • SLAM 介绍

    http www slamcn org index php E9 A6 96 E9 A1 B5 比较好的开源SLAM Odometry代码 xff1a https github com ethz asl rovio https github
  • MIPI接口介绍

    文章转自 xff1a http blog csdn net shen924 article details 9140509 xff0c 留此作为备份 xff0c 感谢原创贡献 xff5e 一 MIPI MIPI xff08 移动行业处理器接
  • STL的多线程安全问题

    1 stl的线程安全 说一些关于stl容器的线程安全相关的话题 一般说来 xff0c stl对于多线程的支持仅限于下列两点 xff1a 貌似Effective STL中有描述 1 多个读取者是安全的 即多个线程可以同时读取一个容器中的内容
  • 树莓派安装docker,Go语言。附VNC软件安装重启后,进入白屏登录界面的解决方案

    树莓派安装docker xff0c Go语言 附VNC软件安装重启后 xff0c 进入白屏登录界面的解决方案 背景 xff1a 课题要使用hyperledger xff0c 在ARM上应用 涉及到docker xff0c go语言 之后会包
  • 黑马程序员C++课程笔记二(模板、STL)

    笔记 C 43 43 模板 STL学习笔记 代码地址 xff1a 程序文件名与课程P一致 文章目录 笔记 C 43 43 模板 STL学习笔记1 模板1 1 模板的概念1 2 函数模板1 2 1 函数模板语法1 2 2 函数模板注意事项1
  • Nano板使用USB与PX4通信

    环境配置 USB micro与PX4通信 文章目录 环境配置 USB micro与PX4通信1 硬件接线2 软件环境 最近项目需要PX4与记载电脑通信 xff0c 查了下资料目前方案有 1 使用TELEM2串口的 xff0c 阿木的就是使用
  • 在Win下Visual Studio配置Eigen

    在Win下Visual Studio配置Eigen 最近在使用Visual Studio时想使用一下著名的矩阵运算库 xff1a Eigen xff0c 摸索了一下如何在Visual Studio中配置 1 下载Eigen源码 直接到Eig