安装和使用C++线性代数库eigen(Windows下minGW+VS code, VS2019配置方式)

eigen是一个线性代数的第三方库
安装之后,只要include相应头文件,就可以方便地使用C++进行矩阵乘法,矩阵求逆等操作,像MATLAB一样(语法方面略微有区别,另一个同类的库armadillo的语法更像MATLAB,但是安装和配置没有eigen方便)。

安装eigen

eigen无需安装,直接下载源代码解压包解压即可。

下载地址(3.3.8版本):
https://gitlab.com/libeigen/eigen/-/archive/3.3.8/eigen-3.3.8.zip

官网:
http://eigen.tuxfamily.org/index.php?title=Main_Page

VS2019配置方式

随便打开一个空项目
在这里插入图片描述

在右侧解决方案资源管理器上,对项目名点击右键,属性
在这里插入图片描述

在这里插入图片描述

配置和平台选择 所有配置,所有平台
在这里插入图片描述
左侧点VC++目录,然后右侧选包含目录,编辑
在这里插入图片描述
把你解压的文件夹目录写入
在这里插入图片描述

完成

测试一下

#include <iostream>
#include <Eigen/Dense>

using namespace Eigen;
using namespace std;
int main()
{
  Vector3d v(1,2,3);
  Vector3d w(0,1,2);

  cout << "Dot product: " << v.dot(w) << endl;
  double dp = v.adjoint()*w; // automatic conversion of the inner product to a scalar
  cout << "Dot product via a matrix product: " << dp << endl;
  cout << "Cross product:\n" << v.cross(w) << endl;
}

代码来源: 官方example
E:\App\eigen-3.3.8\doc\examples\tut_arithmetic_dot_cross.cpp

结果
在这里插入图片描述

Windows下minGW+VS code配置方式

假设你已经配置好了VS CODE和minGW,可以进行正常的C++代码编译调试。
现在来增加第三方库eigen

ctrl+shift+P打开命令面部。或者左下角齿轮,点击命令面板。
在这里插入图片描述
编辑配置(UI)
这一步其实是配置c_cpp_properties.json这个文件,是配置C/C++这个插件的。

这个插件的目的是高亮、语法检查和代码预览等。也就是用来方便用户查看的,并非是真正的编译器,在此的配置也是为了正确显示高亮和语法检查等。
在这里插入图片描述

会弹出C/C++这个插件的配置,找到包含路径,把目录复制进去。最后以**结束代表搜索其子文件夹。
在这里插入图片描述

然后配置编译器。
编译器用的是minGW,其实就是linux上的gcc移植到windows的版本。

打开命令面部,选择配置默认生成任务
在这里插入图片描述
会自动打开tasks.json
只需要增加一行即可

"-I'E:/App/eigen-3.3.8'"

在这里插入图片描述
完成

运行结果测试
测试代码

#include <Eigen/Dense>
#include <iostream>

using namespace Eigen;
using namespace std;

int main()
{
  ArrayXXf  m(2,2);
  
  // assign some values coefficient by coefficient
  m(0,0) = 1.0; m(0,1) = 2.0;
  m(1,0) = 3.0; m(1,1) = m(0,1) + m(1,0);
  
  // print values to standard output
  cout << m << endl << endl;
 
  // using the comma-initializer is also allowed
  m << 1.0,2.0,
       3.0,4.0;
     
  // print values to standard output
  cout << m << endl;


    getchar();
}

结果
在这里插入图片描述

补充: 一劳永逸的方法

放到自己的工程文件目录里即可

  • 26
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: C2338错误通常是由于Eigen中的模板参数错误导致的。您可以检查您的代码是否正确地使用Eigen中的模板类和函数,并确保您的代码与您使用Eigen版本兼容。如果问题仍然存在,您可以尝试更新您的Eigen或联系Eigen的维护者以获取更多帮助。 ### 回答2: 在使用VS2019编写C++程序时,如果使用Eigen,可能会遇到c2338错误。这个错误是由于Eigen在实现矩阵计算时使用了一些特殊的技巧,这些技巧需要使用C++11的特性才能实现。如果使用的编译器不支持这些特性,就会出现c2338错误。 解决这个问题的方法是,在VS2019的项目属性中将C++11支持设置为“是”。具体操作步骤如下: 1. 打开你的VS2019项目,并右键单击项目名称,选择“属性”选项。 2. 选择“配置属性”,然后选择“C/C++”,在右侧的面板中选择“语言”。 3. 在语言选项中,将“启用C++11支持”设置为“是”。 4. 点击“应用”按钮,然后点击“确定”按钮。 通过这个方法,你的项目就可以使用C++11的特性了,从而避免了c2338错误。同时,这还可以让你的代码更加现代化,具有更好的性能和可读性。所以,如果你使用Eigen时遇到了c2338错误,不要担心,只需要按照上述步骤进行设置即可。 ### 回答3: C++编程中常见的一种错误是C2338,这种错误是由于程序试图在一个不支持的数据类型上执行某些操作时导致的。对于使用Eigen的程序员来说,这种错误非常常见。 Eigen是一个用于线性代数运算的C++,可以让程序员方便地进行矩阵、向量、矢量等各种数学运算。但是,在使用Eigen时, 具体的错误信息可能是: error C2338: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CASTMETHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY 这个错误的原因是,程序试图在两种不同的类型之间执行数学运算,但是Eigen只支持一种数据类型。 比如,在计算两个矩阵的和时,如果这两个矩阵的数据类型不同,那么就会出现这个错误。为了解决这个问题,程序员需要将其中一个矩阵的数据类型转换为另一种类型,以使两者类型一致。 解决这个问题的方法是使用Eigen提供的cast方法,将矩阵中的所有元素都转换为指定的数据类型。具体步骤如下: 1.找到程序中出现这个错误的部分; 2.确定两个操作数的数据类型; 3.使用cast方法将其中一个矩阵转换为另一个矩阵的数据类型。 示例代码: Eigen::MatrixXd a(3, 3); Eigen::MatrixXi b(3, 3); // 将b矩阵转换为double类型 a = b.cast<double>(); 通过这种方法,程序员就可以成功地解决C2338错误。当然,在实际编程中,还需要注意其他细节,比如矩阵的维度、元素的类型等,以确保程序能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值