【问题标题】:Compiling eigen in Dev-C++ and windows在 Dev-C++ 和 windows 中编译 eigen
【发布时间】:2015-05-31 20:44:32
【问题描述】:

我正在尝试在带有 Dev-C++ 的 Windows 上使用 Eigen 库。我正在使用“入门”程序:

#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
  MatrixXd m(2,2);
  m(0,0) = 3;
  m(1,0) = 2.5;
  m(0,1) = -1;
  m(1,1) = m(1,0) + m(0,1);
  std::cout << m << std::endl;
}

但我得到以下编译日志:

编译器:默认编译器 构建 Makefile:“C:\Dev-Cpp\tsesn\Makefile.win” 执行制作... make.exe -f "C:\Dev-Cpp\tsesn\Makefile.win" 全部 g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4 .2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev -Cpp/include" -I"C:/Dev-Cpp/eigen"

在 C:/Dev-Cpp/eigen/Eigen/Core:287 包含的文件中, 来自 C:/Dev-Cpp/eigen/Eigen/Dense:1, 来自 main.cpp:2: C:/Dev-Cpp/eigen/Eigen/src/Core/util/Memory.h: In function void* Eigen::internal::aligned_malloc(size_t)': C:/Dev-Cpp/eigen/Eigen/src/Core/util/Memory.h:228: error:_aligned_malloc' undeclared (先用这个函数) C:/Dev-Cpp/eigen/Eigen/src/Core/util/Memory.h:228: 错误:(每个未声明的标识符对于它出现的每个函数只报告一次。)

C:/Dev-Cpp/eigen/Eigen/src/Core/util/Memory.h: In function void Eigen::internal::aligned_free(void*)': C:/Dev-Cpp/eigen/Eigen/src/Core/util/Memory.h:251: error:_aligned_free' undeclared (先用这个函数) C:/Dev-Cpp/eigen/Eigen/src/Core/util/Memory.h: 在函数void* Eigen::internal::aligned_realloc(void*, size_t, size_t)': C:/Dev-Cpp/eigen/Eigen/src/Core/util/Memory.h:283: error:_aligned_realloc' undeclared(先用这个函数)

在 C:/Dev-Cpp/eigen/Eigen/Core:343 包含的文件中, 来自 C:/Dev-Cpp/eigen/Eigen/Dense:1, 来自 main.cpp:2: C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:在全球范围内: C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:39:错误:“bool”之前的预期主表达式 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:39: 错误:预期>' before "bool" C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:56: error: template argument 5 is invalid C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:56: error:value'不是<declaration error>' C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:65: error: template argument 5 is invalid C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:65: error:value'的成员不是`'的成员

C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:207:错误:模板参数 4 无效 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:207: 错误:ISO C++ 禁止声明m_data' with no type C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: In member functionconst T* Eigen::DenseStorage::data() const': C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:227: 错误:array' has not been declared C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:227: error: request for member of non-aggregate type before ';' token C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: In member functionT* Eigen::DenseStorage::data()': C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:228: error: `array' has not been declared

C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:228:错误:在“;”之前请求非聚合类型的成员令牌 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:在全球范围内: C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:262: 错误:模板参数 4 无效 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:262: 错误:ISO C++ 禁止声明m_data' with no type C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: In member functionconst T* Eigen::DenseStorage::data() const': C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:287: 错误:array' has not been declared C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:287: error: request for member of non-aggregate type before ';' token C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: In member functionT* Eigen::DenseStorage::data()': C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:288: 错误:array' has not been declared C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:288: error: request for member of non-aggregate type before ';' token C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: At global scope: C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:294: error: template argument 4 is invalid C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:294: error: ISO C++ forbids declaration ofm_data' 没有类型 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: 在成员函数const T* Eigen::DenseStorage<T, Size, -0x000000001, _Cols, _Options>::data() const': C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:316: error:array' 中没有被声明 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:316: 错误:在';'之前请求非聚合类型的成员令牌 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: 在成员函数`T* Eigen::DenseStorage::data()'中:

C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:317: 错误: `array' 没有被声明 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:317: 错误:在';'之前请求非聚合类型的成员令牌

C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:在全局范围内: C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:323: 错误:模板参数 4 无效 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:323: 错误:ISO C++ 禁止声明没有类型的“m_data”

C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: 在成员函数const T* Eigen::DenseStorage<T, Size, _Rows, -0x000000001, _Options>::data() const': C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:345: error:array' 中没有被声明 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:345:错误:在';'之前请求非聚合类型的成员令牌 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h: 在成员函数T* Eigen::DenseStorage<T, Size, _Rows, -0x000000001, _Options>::data()': C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:346: error:array' 中没有被声明 C:/Dev-Cpp/eigen/Eigen/src/Core/DenseStorage.h:346: 错误:在';'之前请求非聚合类型的成员令牌

C:/Dev-Cpp/eigen/Eigen/src/Core/PlainObjectBase.h:254:被之前的错误弄糊涂了,赶紧退出

make.exe: *** [main.o] 错误 1

执行终止

我该如何解决这个问题?

【问题讨论】:

    标签: eigen dev-c++


    【解决方案1】:

    恐怕 Dev-C++ (http://www.bloodshed.net/dev/devcpp.html) 中的编译器很古老,并且不受 Eigen (http://eigen.tuxfamily.org/index.php?title=Main_Page#Compiler_support) 的支持。请注意其中的版本号。

    您可以使用更现代的 IDE,例如 QtCreator (http://wiki.qt.io/Category:Tools::QtCreator),或任何其他提供更新、兼容编译器的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2011-05-16
      • 2015-08-29
      • 2011-10-08
      相关资源
      最近更新 更多