2017-05-23 97 views
0

我試圖使用本徵庫的MKL庫鏈接(ICC版本17.0.4)與代碼:EIGEN庫MKL右值引用警告

#define EIGEN_USE_MKL_ALL 
#define lapack_complex_float std::complex<float> 
#define lapack_complex_double std::complex<double> 

#include <iostream> 
#include <Eigen/Dense> 
#include <Eigen/Eigenvalues> 
#include <complex> 
#include <Eigen/PardisoSupport> 

using namespace Eigen; 
using Eigen::MatrixXd; 

int main() 
{ 
    int size = 3; 
    MatrixXd A(size,size); 
    A(0,0)=1.0;  A(0,1)=-0.5;   A(0,2)=0.2; 
    A(1,0)=0.7;  A(1,1)=-1.3;  A(1,2)=-2.0; 
    A(2,0)=0.7;  A(2,1)=-1.3;  A(2,2)=-2.0; 

    std::cout << A << std::endl; 
    VectorXd vec(3); 
    vec(0) = 2;   
    vec(1) = 3;   
    vec(2) = 4; 

    std::cout << A*vec << "\n"; 

    std::cout << A.eigenvalues() << "\n"; 

} 

我通過

icc -I${MKLROOT}/include -L${MKLROOT}/lib -Wl,-rpath,${MKLROOT}/lib \ 
    -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl \ 
    -L/Users/user/eigen -I/Users/user/eigen 
編譯

不過,我收到錯誤消息:

/Users/user/eigen/Eigen/src/Core/DenseStorage.h(372): warning #3495: rvalue references 
are a C++11 feature DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT 

如何解決這個警告?

回答

0

Eigen似乎檢測到您的編譯器支持右值引用。您可以禁用由通過命令行定義-DEIGEN_HAS_RVALUE_REFERENCES=0或包括在本徵你的源通過之前:

#define EIGEN_HAS_RVALUE_REFERENCES 0 

最好,告訴ICC,它應符合C++ 11的支持編譯(我假設-std=c++11作品作爲ICC好)。

+0

謝謝。它完美的作品 – Galuoises