Linux查看编译器intel,使用intel编译器在linux上编译特征库时出错

我可以用mingw编译器成功编译cygwin上的Eigen。使用intel编译器在linux上编译特征库时出错

使用intel C++编译器在Linux上编译时,出现以下错误。

我正在使用特征库来解决AX = B。

我正在使用Eigen3.3-rc1。

任何想法如何解决这个问题?

谢谢。

./Eigen/src/Core/CoreEvaluators.h(491):错误:一个类类型的对象的呼叫,而不适当的运算符()或转换函数指针到功能类型 返回m_wrapper( m_functor,索引); 检测期间: 实例化“Eigen :: CwiseNullaryOp :: CoeffReturnType Eigen :: internal :: evaluator> :: coeff(IndexType)const [与NullaryOp = Eigen :: internal :: scalar_constant_op,PlainObjectType = Eigen :: Matrix,IndexType在“./Eigen/src/Core/AssignEvaluator.h” 的第637行。 。 。 错误继续

编辑:更大的错误信息如下。

./Eigen/src/Core/CoreEvaluators.h(491): error: call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type

return m_wrapper(m_functor,index);

^

detected during:

instantiation of "Eigen::CwiseNullaryOp::CoeffReturnType Eigen::internal::evaluator<:cwisenullaryop plainobjecttype>>::coeff(IndexType) const [with NullaryOp=Eigen::internal::scalar_constant_op, PlainObjectType=Eigen::Matrix, IndexType=long]" at line 637 of "./Eigen/src/Core/AssignEvaluator.h"

instantiation of "void Eigen::internal::generic_dense_assignment_kernel::assignCoeff(Eigen::Index={ptrdiff_t={long}}) [with DstEvaluatorTypeT=Eigen::internal::evaluator<:block>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false>>,

SrcEvaluatorTypeT=Eigen::internal::evaluator<:cwisenullaryop>, Eigen::Matrix>>, Functor=Eigen::internal::div_assign_op, Version=0]" at line 390 of "./Eigen/src/Core/AssignEvaluator.h"

instantiation of "void Eigen::internal::unaligned_dense_assignment_loop::run(Kernel &, Eigen::Index={ptrdiff_t={long}}, Eigen::Index={ptrdiff_t={long}}) [with Kernel=Eigen::internal::generic_dense_assignment_kernel<:internal::evaluator>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false>>,

Eigen::internal::evaluator<:cwisenullaryop>, Eigen::Matrix>>, Eigen::internal::div_assign_op, 0>]" at line 413 of "./Eigen/src/Core/AssignEvaluator.h"

instantiation of "void Eigen::internal::dense_assignment_loop::run(Kernel &) [with Kernel=Eigen::internal::generic_dense_assignment_kernel<:internal::evaluator>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false>>, Eigen::internal::evaluator<:cwisenullaryop>, Eigen::Matrix>>,

Eigen::internal::div_assign_op, 0>]" at line 713 of "./Eigen/src/Core/AssignEvaluator.h"

instantiation of "void Eigen::internal::call_dense_assignment_loop(const DstXprType &, const SrcXprType &, const Functor &) [with DstXprType=Eigen::Block<:block>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false>, SrcXprType=Eigen::CwiseNullaryOp<:internal::scalar_constant_op>, Eigen::Matrix>, Functor=Eigen::internal::div_assign_op]" at line

862 of "./Eigen/src/Core/AssignEvaluator.h"

[ 6 instantiation contexts not shown ]

instantiation of "void Eigen::internal::partial_lu_inplace(MatrixType &, TranspositionType &, TranspositionType::StorageIndex &) [with MatrixType=Eigen::Matrix, TranspositionType=Eigen::Transpositions]" at line 530 of "./Eigen/src/LU/PartialPivLU.h"

instantiation of "void Eigen::PartialPivLU<_matrixtype>::compute() [with _MatrixType=Eigen::Matrix]" at line 131 of "./Eigen/src/LU/PartialPivLU.h"

instantiation of "Eigen::PartialPivLU<_matrixtype> &Eigen::PartialPivLU<_matrixtype>::compute(const Eigen::EigenBase &) [with _MatrixType=Eigen::Matrix, InputType=Eigen::Matrix]" at line 323 of "./Eigen/src/LU/PartialPivLU.h"

instantiation of "Eigen::PartialPivLU<_matrixtype>::PartialPivLU(const Eigen::EigenBase &) [with _MatrixType=Eigen::Matrix, InputType=Eigen::Matrix]" at line 606 of "./Eigen/src/LU/PartialPivLU.h"

instantiation of "const Eigen::PartialPivLU<:densebase>::PlainObject> Eigen::MatrixBase::lu() const [with Derived=Eigen::Matrix]" at line 245 of "Matrix.cpp"

下面是一个使用本征

#include

using Eigen::MatrixXd;

using Eigen::VectorXd;

int solveAXBEigen(double *a, double *b, double *x, int n) {

MatrixXd A(n, n);

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

A(i, j) = a[n * i + j];

}

}

VectorXd B(n);

for (int i = 0; i < n; i++) {

B(i) = b[i];

}

VectorXd X = A.lu().solve(B);

for (int i = 0; i < n; i++) {

x[i] = X(i);

}

return 0;

}

+1

所有的单元测试都可以用ICC编译,所以请显示触发这个问题的代码行。 –

+0

编辑问题以包含相关代码以及更大的错误消息跟踪。 –

+0

在这里,你的例子用ICC 16.0.2和Eigen 3.3-rc1编译得很好。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值