在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 的相关文章

  • 没有已知的从值到值的表达式&...为什么?

    我尝试编写一个函数 该函数需要ColXpr作为输入的值 typedef Eigen Array
  • 通过 CMake 添加外部库(例如 Eigen)

    我已经处理这个问题几个星期了 我知道我可能只是错过了一个我没有意识到的小步骤 因此 任何见解都将受到高度赞赏 我正在尝试添加一些外部库并在我的 C 项目中使用它们 但似乎无法弄清楚如何 我阅读了互联网上有关添加外部库的所有帖子 但我相信我错
  • Eigen::Ref<> 作为成员变量

    我需要一个类有一个 Eigen Ref 变量作为静态成员 该变量将通过init静态方法 像这样的东西 class CostFunction public static Eigen Ref
  • 稠密对称矩阵的特征有效类型

    Does Eigen http eigen tuxfamily org index php title Main Page有存储密集 固定大小 对称矩阵的有效类型吗 嘿 它们无处不在 IE 对于 N 9 它应该只存储 1 9 9 2 45
  • 特征:矩阵到四元数和后面有不同的结果

    我使用 Eigen 库将矩阵转换为四元数 但是当我将其中一个矩阵转换为四元数并将其烧回时 它变成了另一个矩阵 即单位矩阵 我使用的旋转矩阵是从变换矩阵分解而来的 Eigen Matrix3f R3d R topLeftCorner lt 3
  • Eigen 库 - 矩阵的伪逆(Matlab - pinv)

    我正在尝试使用特征库找到矩阵的伪逆 他们有一个类确实实现了它 但是我不知道如何编写脚本语法 这是它在网站上显示的方式 https eigen tuxfamily org dox classEigen 1 1CompleteOrthogona
  • Rcpp 相当于 rowsum [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找 R 函数的快速替代方案r
  • 如何访问tensorflow::Tensor C++

    我正在使用其 C API 运行 Tensorflow 我有以下调用 它在 FinalOutput 中返回四个张量 std string str1 detection boxes std string str2 detection score
  • 元素矩阵乘法:R 与 Rcpp(如何加速此代码?)

    我是新来的C 编程 使用Rcpp无缝集成到R 并且我希望得到一些有关如何加快某些计算速度的建议 考虑以下示例 testmat lt matrix 1 9 nrow 3 testvec lt 1 3 testmat testvec 1 2 3
  • 在 Android 中使用 iBeacons 进行三边测量

    我们希望使用 iBeacons 实现某种室内位置确定 这篇文章看起来真的很有趣 http techblog rga com determining indoor position using ibeacon 其中作者使用 Eigen C 库
  • 从稀疏矩阵中提取块作为另一个稀疏矩阵

    如何从a中提取一个块Eigen SparseMatrix
  • 根据任意分布设置 Eigen::Matrix 的系数

    Eigen Matrix 有一个 setRandom 方法 它将矩阵的所有系数设置为随机值 但是 是否有一种内置方法可以将所有矩阵系数设置为随机值 同时指定要使用的分布 有没有办法实现类似以下内容 Eigen Matrix3f myMatr
  • 如何在 Eigen 中平移矩阵(4x4)?

    如何在 Eigen 中平移矩阵 4x4 identity matrix 4x4 type Eigen Matrix
  • C++ 在张量流中使用 Eigen

    张量流和特征值之间有什么关系 特别是关于tensor数据结构 有一些较旧的引文 例如 其中指出tensorflow正在广泛使用Eigen 据我所知 tensorflow人员已经扩展了Eigen代码 然而 最近的张量流文档似乎没有明确提及 E
  • 如何桥接 JavaScript(参差不齐)数组和 std::vector> 对象?

    在 JavaScript 中 我有一个 线 列表 每条线都由不定数量的 点 组成 每个点都有以下形式 x y 所以它是一个 3D 参差不齐的数组 现在我需要在 emscripten 的帮助下将它传递给我的 C 代码 embind https
  • cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 *.exe.stackdump

    我收到 cygwin exception open stackdumpfile 将堆栈跟踪转储到 TestProject exe stackdump 错误 我的项目只不过是一个 C HalloWorld 项目 其中包含一个附加类 我在其中设
  • 使用 Eigen 库存储 3D 数据

    如何使用 Eigen C 库存储 3D 数据 矢量用于 1D 数据 矩阵用于 2D 数据 但什么是 3D 数据 或者是否可以创建矩阵向量 您可以使用张量模块 但它还不稳定 Eigen Tensor
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 模板成员函数和 std::invocable 的 C++20 概念中的错误

    我正在尝试 C 20 概念和本征库 https eigen tuxfamily org index php title Main Page 我发生了意想不到的行为 具体来说 考虑以下概念 要求类型可以通过以下任一方式调用 Eigen Mat
  • CUDA 和 Eigen 的成员“已声明”错误

    我只是 CUDA 和 Nsight 的初学者 希望利用出色的 GPU 性能进行线性代数运算 例如 CUBLAS 我在以下人员的帮助下编写了很多自定义代码Eigen http eigen tuxfamily org index php tit

随机推荐

  • 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