Bonjour (ou Bonsoir pour les nocturnes),
Je m'adresse à vous car j'ai un gros problème avec Armadillo. Je cherche à construire un Filtre de Kalman et j'ai besoin d'une bibliothèque pour des opérations matricielles (produit, inverse etc..). J'ai exporté mon projet de Eigen à Armadillo pour utiliser une bibliothèque commune avec mes collègues.
Pour l'instant je teste petit à petit les opération dans une classe main. La transposée d'une matrice est reconnu. Lorsque je récupère le resultat dans une autre matrice, le projet compile. Lorsque j'utilise le résultat dans un produit de matrices le projet ne compile plus.
Fichier main.cpp :
Remarquez que j'ai ajouté le header "Quaternion.h" qui contient déja le chemin vers Armadillo. Lorsque je commente la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include <iostream> #include "Quaternion.h" using namespace std; using namespace arma; int main(int argCount, char **argValue) { fmat33 B ; B << 1 << 2<< 3<<endr << 4 << 5<< 6<<endr << 1 << 2<< 8<<endr; B.print("B vaut ;"); fmat C = trans(B); C.print("C :"); fmat D = C*B; // D.print("D : "); return 0; }
la compilation s'exécute normalement. Comme ceci (après un make clean) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part fmat D = C*D
Lorsque je décommente la ligne précisé au dessus, j'ai cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 es/NavMultiCap_Armadillo/bin$ make [ 14%] Building CXX object CMakeFiles/NavMultiCap.dir/src/Kalman.cpp.o [ 28%] Building CXX object CMakeFiles/NavMultiCap.dir/src/main.cpp.o [ 42%] Building CXX object CMakeFiles/NavMultiCap.dir/src/MeasureStorage.cpp.o [ 57%] Building CXX object CMakeFiles/NavMultiCap.dir/src/Quaternion.cpp.o [ 71%] Building CXX object CMakeFiles/NavMultiCap.dir/src/Sensor.cpp.o [ 85%] Building CXX object CMakeFiles/NavMultiCap.dir/src/StateModel.cpp.o [100%] Building CXX object CMakeFiles/NavMultiCap.dir/src/StateVector.cpp.o Linking CXX executable NavMultiCap [100%] Built target NavMultiCap
Je suis carrément désespéré. J'ai essayé strans pour la transposée des matrices réelles (sans conjugaison) mais l'erreur est la même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 es/NavMultiCap_Armadillo/bin$ make Scanning dependencies of target NavMultiCap [ 14%] Building CXX object CMakeFiles/NavMultiCap.dir/src/main.cpp.o Linking CXX executable NavMultiCap CMakeFiles/NavMultiCap.dir/src/main.cpp.o: In function `void arma::atlas::cblas_gemv<float>(CBLAS_ORDER, CBLAS_TRANSPOSE, int, int, float, float const*, int, float const*, int, float, float*, int)': main.cpp:(.text._ZN4arma5atlas10cblas_gemvIfEEv11CBLAS_ORDER15CBLAS_TRANSPOSEiiT_PKS4_iS6_iS4_PS4_i[void arma::atlas::cblas_gemv<float>(CBLAS_ORDER, CBLAS_TRANSPOSE, int, int, float, float const*, int, float const*, int, float, float*, int)]+0x6f): undefined reference to `wrapper_cblas_sgemv' CMakeFiles/NavMultiCap.dir/src/main.cpp.o: In function `void arma::atlas::cblas_gemm<float>(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, float, float const*, int, float const*, int, float, float*, int)': main.cpp:(.text._ZN4arma5atlas10cblas_gemmIfEEv11CBLAS_ORDER15CBLAS_TRANSPOSES3_iiiT_PKS4_iS6_iS4_PS4_i[void arma::atlas::cblas_gemm<float>(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, float, float const*, int, float const*, int, float, float*, int)]+0x7d): undefined reference to `wrapper_cblas_sgemm' collect2: ld returned 1 exit status make[2]: *** [NavMultiCap] Erreur 1 make[1]: *** [CMakeFiles/NavMultiCap.dir/all] Erreur 2 make: *** [all] Erreur 2
En espérant que vous reussirez à m'aider et en vous remerciant d'avance pour votre temps.
Partager