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 ligneCode:
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:fmat D = C*D
Lorsque je décommente la ligne précisé au dessus, j'ai cette erreur :Code:
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:
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.