2012-04-05 7 views
2

Ich verwende Eigenbibliothek in C++. Nach Eigen documentation:Verwenden der Eigenbibliothek in Netbeans

Um Eigen zu nutzen, müssen Sie nur herunterladen und extrahieren Eigens Quellcode (siehe Wiki Anweisungen zum Download). Tatsächlich sind die Header-Dateien im Eigen-Unterverzeichnis die einzigen Dateien, die benötigt werden, um Programme unter Verwendung von Eigen zu zu kompilieren. Die Header-Dateien sind für alle Plattformen gleich. Es ist nicht notwendig, CMake zu verwenden oder irgendetwas zu installieren.

Also in Netbeans habe ich das Verzeichnis von Eigen in die "Include-Verzeichnisse". Dann habe ich ein einfaches Programm, wie unten (die in Eigen Dokumentation vorgesehen ist):

#include <iostream> 
#include <Eigen/Dense> 

using namespace std; 
using namespace Eigen; 

int main() 
{ 
    Matrix3f A; 
    Vector3f b; 
    A << 1,2,3, 4,5,6, 7,8,10; 
    b << 3, 3, 4; 
    cout << "Here is the matrix A:\n" << A << endl; 
    cout << "Here is the vector b:\n" << b << endl; 
    Vector3f x = A.colPivHouseholderQr().solve(b); 
    cout << "The solution is:\n" << x << endl; 
} 

Netbeans zeichnet einen roten Unterstrich für colPivHouseholderQr() Methode !! Außerdem kann ich die colPivHouseholderQr() -Methode unter Methoden, die für Objekt A aufgerufen werden können, nicht sehen.

Überraschenderweise funktioniert alles gut und das Programm kompiliert und läuft korrekt, obwohl ich rot unterstreichen für colPivHouseholderQr() !!

Was kann mit meinen Konfigurationen falsch sein?

enter image description here

Antwort

1

Dies ist ein reported problem in the Netbeans when using Eigen.

Es können viele Objektbezeichner nicht aufgelöst werden, einschließlich der Elementfunktionen von Vorlagenobjekten, z. B. colPivHouseholderQr().

Die beste Lösung, die ich ankam, war, stattdessen Eclipse zu verwenden.

-1

Sorry - dies eher ein Kommentar ist, aber ich bin nicht in der Lage Kommentare zu schreiben - aber haben Sie versucht, den Cache zu löschen? Weiß nicht über Windows, aber in Ubuntu ist es normalerweise unter ~/.netbeans/7.0 (oder was auch immer)/var/cache - löschen Sie einfach alles unter dem Cache-Verzeichnis. Manchmal funktioniert das für mich.

+0

Ich habe es überprüft, aber der Cache-Ordner meiner Netbeans war leer. – ManiAm

1

Das Problem ist, dass colPivHouseholderQr() im QR-Modul ist, aber Sie nur das Dense-Modul enthalten.

Versuchen Hinzufügen die folgenden Angaben enthalten:

#include <Eigen/QR> 

See: http://eigen.tuxfamily.org/api/group_QR_Module.html

+0

Vielen Dank für die Antwort, aber wenn Sie Eigen/Dichte-Datei überprüfen, können Sie sehen, dass #include ist da und es gibt keine Notwendigkeit, es wieder einzuschließen. – ManiAm