website logo
Auteur
avatar
AmiDARK

Forum » » Développement » » FTGL & Freetype dans un .a


Post� : 11-09-2012 17:01 icone du post

Bonjour,

J'utilise FTGL (et donc FreeType) dans l'AmiDARK Engine pour certaines fonctions liées aux "Textes".
Donc pour cela, j'inclut bien le <<#!!include!! "FTGL/FTGL.h">> dans mes !!include!!s de ma librairie
Dans la compilation j'ai bien en librairies : -lftgl -lfreetype -lGL -lGLU -lGLUT
L'AmiDARK Engine compile sans erreur. La librairie .a est créee.

Maintenant, je prends ma librairie libamidark.a je l'installe ainsi que ses fichiers de définition.
de ses fichiers de définition, j'inclut le : <<#!!include!! "FTGL/FTGL.h">>.

Dans la compilation de mon programme d'exemple qui utilise l'AmiDARK Engine, j'inclut bien : -lAmiDARK -lftgl -lfreetype -lGL -lGLU -lGLUT.
Je compile et là ... il me dit :
"linker input file unused since linking not done"
puis dans mes fonctions textes de la librairie libAmiDARK.a il me donne plusieurs :
" [Linker Error] undefined reference to 'ftglCreatePixmapFont' " avec les noms de fonctions de la FTGL que j'utilise.

Ce qui m'inquiète c'est que exactement la même procédure pour AmigaOS4 (création de la librairie .a et compilation d'un programme utilisant la librairie .a) fonctionne parfaitement et que mes exemples tournent niquel sur AmigaOS4...
J'aimerais comprendre ...

Je joins les 2 make file :
Création de la librairie .a :

CPP       = ppc-morphos-g++.exe
CC        = ppc-morphos-gcc.exe
AR        = AR.exe
WINDRES   = windres.exe
LIBS      = -L"C:/AmiDevCpp/usr/local/amiga/ppc-morphos/lib"  
INCS      = -I"C:/AmiDevCpp/usr/local/amiga/ppc-morphos/!!include!!" < br />CXXINCS   = -I"C:/AmiDevCpp/usr/local/amiga/ppc-morphos/!!include!!"
RCINCS    = --!!include!!-dir "C:/AMIDEV~1/!!include!!"
BIN       = FlyingFeather.exe
DEFINES   = 
CXXFLAGS  = $(CXXINCS)  
OPTIMIZE = -O3
LIBS      = -lftgl -lfreetype -lGL -lGLU -lGLUT
CFLAGS    = $(OPTIMIZE) 
GPROF     = gprof.exe
RM        = rm -f
LINK      = ppc-morphos-gcc.exe
CP        = copy
STRIP     = strip
SRCS      = libAmiDARK.c
TARGET    = libAmiDARK.a
OBJS      = $(SRCS:.c=.o)

# Rules for building
all: $(TARGET)

$(TARGET): $(OBJS)
    $(AR) rc $@ $^


.PHONY: clean
clean:
    $(RM) $(TARGET) $(TARGET).o $(OBJS)



Compilation de la démo utilisant la librairie .a :

CPP       = ppc-morphos-g++.exe
CC        = ppc-morphos-gcc.exe
OBJ       = BoingBall.o
LINKOBJ   = BoingBall.o
LIBS      = -L"C:/AmiDevCpp/usr/local/amiga/ppc-morphos/lib"  
INCS      = -I"C:/AmiDevCpp/usr/local/amiga/ppc-morphos/!!include!!" < br />CXXINCS   = -I"C:/AmiDevCpp/usr/local/amiga/ppc-morphos/!!include!!"
RCINCS    = --!!include!!-dir "C:/AMIDEV~1/!!include!!"
BIN       = BoingBall.exe
DEFINES   = 
CXXFLAGS  = $(CXXINCS)  
OPTIMIZE = -O3
CFLAGS    = $(INCS) $(OPTIMIZE) -lTinyGL
RM        = rm -f
LINK      = ppc-morphos-gcc.exe
CP        = copy
STRIP     = strip

.PHONY: all all-before all-after clean clean-custom
all: all-before $(BIN) all-after

clean: clean-custom
    $(RM) $(OBJ) $(BIN)

$(BIN): $(OBJ)
    $(LINK) $(LINKOBJ) -o "BoingBall.exe" -noixemul -lAmiDARK -lGLU T -lGLU -lGL -ldebug
    $(RM) $(OBJ)

BoingBall.o: $(GLOBALDEPS) BoingBall.c
    $(CC) -c BoingBall.c -o BoingBall.o $(CFLAGS)



J'ai aussi essayé, dans les 2 makefile, de remplacer le linker par : LINK = ppc-morphos-g++.exe
Car j'ai lu sur le net que FTGL était pour du C++ et que en C fallait utiliser g++ pour la compiler mais, j'obtiens exactement le même résultat...

Si quelqu'un y voit une ou plusieurs erreurs, merci de m'aider.

@+
AmiDARK

Cet article provient de Meta-MorphOS
https://www.meta-morphos.org/viewtopic.php?topic=1107&forum=52