目前,我使用mingw32-g++.exe(GNU GCC Compiler(作为代码块,-std=C++14。编译器下载在这里:http://www.codeblocks.org/downloads/26
但是,此处的所有教程程序都无法编译:https://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html
#include 已正确完成。仅计算行,例如
Matrix2f x = A.ldlt().solve(b);
和Matrix2f x = A.ldlt().solve(b);
失败。我也尝试使用英特尔C++编译器,但仍然失败。
我应该下载哪些编译器才能使用特征C++?
非常感谢您的帮助
更新1:使用"基本线性求解"示例,我得到此错误:
File IndexedViewHelper.h:
"对 Eigen::fix<1> 的未定义引用",第 57 行
"对 Eigen::fix<0>的未定义引用">
更新2:使用第二个示例A.ldlt().solve(b)
,我得到这个:
"[ 跳过 3 个实例化上下文,使用 -ftemplate-backtrace-limit=0 禁用 ]",第 100 行
"[ 跳过 3 个实例化上下文,使用 -ftemplate-backtrace-limit=0 禁用 ]",第 90 行
。
更新 3:完整代码 + 编译器: 字面上只是一个主文件.cpp + 添加特征文件夹来搜索目录
` #include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
Matrix2f A, b;
A << 2, -1, -1, 3;
b << 1, 2, 3, 1;
cout << "Here is the matrix A:n" << A << endl;
cout << "Here is the right hand side b:n" << b << endl;
Matrix2f x = A.ldlt().solve(b);
cout << "The solution is:n" << x << endl;
}`
解决方案:我只是注意到程序实际上编译成功,但它总是给出错误"[跳过 3 个实例化上下文,使用 -ftemplate-backtrace-limit=0 禁用 ]",第 100 行,文件 CoreEvaluators.h
因此,用于代码块的常规 MinGW 编译器仍然有效。只是它总是给出该错误(+20 秒长的编译,其中它输出一堆像上面这样的消息(。
更新的解决方案:哦,天哪,我觉得自己太愚蠢了。禁用以下警告:
启用有效C++警告(感谢 Scott Meyers( [-Weffc++]。
"错误"(实际上是警告(不再发送垃圾邮件,程序会立即编译。由于某些原因,这些警告显示为错误,并导致编译过程突然停止(使其显示为失败(。几乎是一个不可调试的错误。