[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...