2017-05-23 10 views
0

ich die Verwendung versuche die EIGEN-Bibliothek mit der Bibliothek MKL verknüpft (icc Version 17.0.4) mit dem Code:EIGEN Bibliothek mit Referenzen MKL rvalue Warnung

#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"; 

} 

ich über

kompilieren
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 

Allerdings erhalte ich die Fehlermeldung:

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

Wie diese Warnung zu lösen?

Antwort

0

Eigen scheint zu erkennen, dass Ihr Compiler Rvalue-Referenzen unterstützt. Sie können entweder deaktivieren, dass durch -DEIGEN_HAS_RVALUE_REFERENCES=0 über die Kommandozeile zu definieren oder vor Eigen in Ihrer Quelle, einschließlich von:

#define EIGEN_HAS_RVALUE_REFERENCES 0 

Vorzugsweise icc sagen, dass es mit C++ 11-Unterstützung kompiliert werden (ich nehme an -std=c++11 Werke für icc als Gut).

+0

Vielen Dank. Es funktioniert perfekt – Galuoises

Verwandte Themen