alglib c++ : pb de compilation
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 :
Code:
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;
} |
Pour le compiler j'utilise le makefile suivant :
Code:
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 |
Et voilà le résultat du make :
Code:
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 |
Pourtant ap::free est bien définie dans ap.h. :?
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++.