Bonjour,
Je cherche à utiliser la bibliothèque alglib (http://www.alglib.net/) pour un projet en c++.
J'ai suivi leur doc (rudimentaire) pour l'installation, qui s'est bien passée. J'ai un ensemble de .h et un ligalglib.a qui sont réunis dans un seul et même répertoire.
Bien !
Maintenant je passe à la pratique et je construis mon premier programme, main.cpp, en m'inspirant des fichiers de démo :
Pour le compiler j'utilise le makefile suivant :
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 #include <stdlib.h> #include <stdio.h> #include "ext/alglib/out/ap.h" using namespace std; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int main( int argc, char *argv[] ) { ap::real_1d_array x; return 0; }
Et voilà le résultat du make :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #!/bin/bash # MAKEFILE # == MACROS ================================================== # Paths S = src I = inc O = obj # Definitions OUTPUT = exec OBJ_LIST = $(O)/main.o # Misc CC = g++ CFLAGS = -Wall -c -g -lm LFLAGS = -Wall -g # ============================================================ # -- DUMMY TARGETS ---------------- # Rebuild all target all: $(OUTPUT) # Clean clean: \rm $(O)/*.o $(OUTPUT) # -- TARGETS ----------------------- # Output $(OUTPUT) : $(OBJ_LIST) $(CC) $(LFLAGS) $(OBJ_LIST) -o $(OUTPUT) $(O)/main.o : $(S)/main.cpp $(CC) $(CFLAGS) $(S)/main.cpp -o $(O)/main.o -Lext/alglib/out/ -lalglib
Pourtant ap::free est bien définie dans ap.h.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 g++ -Wall -c -g -lm src/main.cpp -o obj/main.o -Lext/alglib/out/ -lalglib g++ -Wall -g obj/main.o -o exec obj/main.o: In function `~template_1d_array': ext/alglib/out/ap.h:239: undefined reference to `ap::afree(void*)' collect2: ld returned 1 exit status
Y a-t-il un utilisateur d'alglib qui pourrait éclairer ma lanterne ? Pourquoi la version C++ d'alglib fait-elle appel à ces commandes de C ?
Je travaille sous Ubuntu 9.10, et je compile avec g++.
Partager