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 :
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;
}
Remarquez que j'ai ajouté le header "Quaternion.h" qui contient déja le chemin vers Armadillo. Lorsque je commente la ligne
la compilation s'exécute normalement. Comme ceci (après un make clean) :
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
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
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
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.
En espérant que vous reussirez à m'aider et en vous remerciant d'avance pour votre temps.