2016-07-20 23 views
0

Ich versuche Eigen3 in meinem Projekt zu verwenden, und ich bekomme diese Fehlermeldung, wenn ich versuche mit CMake zu bauen und macheEigen3 von Linux Mint 17,3 Repo, Dünnbesetzte Matrix nicht genannt

/usr/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h:246:11: error: ‘SparseMatrix’ does not name a type 
     typedef SparseMatrix<Scalar, 0, StorageIndex> ReturnType; 

I 17.3 Linux Mint verwenden. Ich habe sowohl die Eigen2- als auch die Eigen3-Bibliotheken und ich bin mir ziemlich sicher, dass der CMake Eigen3 auswählt (insbesondere angesichts der oben angegebenen Fehlermeldung). Ich habe eigen3 mit dem Befehl sudo apt-get install libeigen3-dev installiert. Wenn ich apt-cache show libeigen3-dev laufen bekomme ich

Package: libeigen3-dev 
Priority: extra 
Section: universe/libdevel 
Installed-Size: 5130 
Maintainer: Ubuntu Developers <[email protected]> 
Original-Maintainer: Debian Science Maintainers <[email protected]> 
Architecture: all 
Source: eigen3 
Version: 3.3~beta1-2 
Depends: pkg-config 
Suggests: libeigen3-doc, libmrpt-dev 
Filename: pool/universe/e/eigen3/libeigen3-dev_3.3~beta1-2_all.deb 
Size: 662650 
MD5sum: bad08ef7b1d166c5bc9903e510a9fb68 
SHA1: ef35745fcd047f1a1f18834e02ccef1476d7407c 
SHA256: 5c73d97dca2d950ce51bde451deed4b6508b2f6cca9b9b6563218591e029f17b 
Description-en: lightweight C++ template library for linear algebra 
Eigen 3 is a lightweight C++ template library for vector and matrix math, 
a.k.a. linear algebra. 
. 
Unlike most other linear algebra libraries, Eigen 3 focuses on the simple 
mathematical needs of applications: games and other OpenGL apps, spreadsheets 
and other office apps, etc. Eigen 3 is dedicated to providing optimal speed 
with GCC. A lot of improvements since 2-nd version of Eigen. 
Description-md5: 71025bd67be9e83075fd5a0e7ab822a2 
Homepage: http://eigen.tuxfamily.org 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug 
Origin: Ubuntu 
Supported: 9m 

hier ein minimaler Code-Schnipsel ist:

#include <unsupported/Eigen/KroneckerProduct> 
int main() { 
    return 0; 
} 

mit g++ -std=c++11 -I /usr/local/include/eigen3 hello.cpp -o hello Kompilieren:

In file included from /usr/local/include/eigen3/unsupported/Eigen/KroneckerProduct:30:0, 
       from hello.cpp:4: 
/usr/local/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h:246:11: error: ‘SparseMatrix’ does not name a type 
    typedef SparseMatrix<Scalar, 0, StorageIndex> ReturnType; 
+0

Wie wäre es mit der offiziellen Version? – kangshiyin

+0

Ich habe die offizielle Version aus dem Mercurial Repo getestet und habe den gleichen Fehler bekommen. – BlazePascal

+0

Wie wäre es mit älteren Version wie 3.2.9. Wie auch immer, es ist "nicht unterstützt" – kangshiyin

Antwort

1

Sie Problem kann mit der richtigen inlcude s gelöst werden. Die erste definiert SparseMatrix, die Ihre erste Fehlermeldung korrigiert. Der zweite verwendet den richtigen Pfad, der Ihre zweite Fehlermeldung korrigiert.

#include <Eigen/Sparse> 
#include <unsupported/Eigen/KroneckerProduct> 
int main() { 
    return 0; 
} 
+0

Dies gibt immer noch den gleichen Fehler, die ich ursprünglich aufgeführt. 'SparseMatrix nennt keinen Typ ...' – BlazePascal

+0

Wie können Sie Ihren Code übersetzen? Was sind die Kompilierungsoptionen? – kangshiyin

+0

'g ++ -std = C++ 11 -I/usr/lokal/include/eigen3 hallo.cpp -o hallo' – BlazePascal

Verwandte Themen