[Solved] CPPLapack // Bibliothek einbinden // C++-Eclipse



  • Ich hoffe mir kann jemand weiterhelfen. Ich benutze C++-Eclipse als Entwicklungsumgebung, MinGW als Compiler und möchte die CPPLapack-Bibliothek in meinem Programm nutzen. Da ich bisher noch nie externe Bibliotheken genutzt habe, habe ich keine Ahnung welche Ursache folgender Fehler hat:

    src\matrix.o: In function Z11almostEqualddd': C:/Program Files/cpp-eclipse/Projekte/Linear Algebra/Debug/../src/matrix.cpp:805: undefined reference todgesvd_'

    Der g++-Compiler wird laut der Eclipse-Ausgabe mit folgenden Parametern aufgerufen:

    g++ -LC:\cpplapack\lib64 -o Linear Algebra.exe src\vector.o src\matrix.o src\Useful.o src\SlowRM.o src\RandomMatrix.o src\Polynomial.o src\Linear Algebra.o src\IndrandRM.o

    Der Fehler entsteht durch die Zeile mat.dgesvd(s_, u_, vt_);, die wohl auf die Funktion dgesvd_ aus einer der .lib-Dateien zugreift. Wenn ich die Zeile auskommentiere, wird alles kompiliert, obwohl ich andere (primitive) Methoden von CPPLapack nutze. D.h. das includieren der cpplapack.h funktioniert also.



  • Linkst du die .lib denn mit?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • cooky451 schrieb:

    Linkst du die .lib denn mit?

    Was meinst du damit genau?

    In dem Ordner C:\cpplapack\lib64 stehen die benötigen .lib-Dateien. Entsprechend wird "-LC:\cpplapack\lib64" als Parameter verwendet. Oder muss noch irgendwas in den Quelltext geschrieben werden?

    Edit:
    Ich glaube, ich muss auch noch die einzelnen Bilbiotheken einzeln nennen. Allerdings bekommme ich immernoch Fehler:
    (ich hab jetzt den Ordner lib statt lib64 genommen, vllt kommt mein Compiler nicht mit 64bit zurecht oder sowas)

    g++ -LC:\cpplapack\lib -o Linear Algebra.exe src\vector.o src\matrix.o src\Useful.o src\SlowRM.o src\RandomMatrix.o src\Polynomial.o src\Linear Algebra.o src\IndrandRM.o -llibf2c -lBLAS -lclapack
    Warning: .drectve `/DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unrecognized
    ...
    Warning: .drectve `/DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unrecognized
    C:\cpplapack\lib/clapack.lib(./Release/dgesvd1.obj):(.text[_dgesvd_]+0x2f4): undefined reference to `s_cat'
    C:\cpplapack\lib/clapack.lib(./Release/dgesvd1.obj):(.text[_dgesvd_]+0x10a6): undefined reference to `s_cat'
    ...
    C:\cpplapack\lib/clapack.lib(./Release/dlarfg1.obj):(.text[_dlarfg_]+0x1bc): undefined reference to `f2c_dscal'
    C:\cpplapack\lib/clapack.lib(./Release/dlarfg1.obj):(.text[_dlarfg_]+0x232): undefined reference to `f2c_dscal'
    

    (Zwischen den Punkten sind jeweils noch sehr viele ähnliche Fehler)

    Edit:
    Ich hab heute nochmal rumprobiert. Plötzlich funktioniert alles, ich hab aber absolut keine Ahnung warum...


Anmelden zum Antworten