PDA

Voir la version complète : [NDS][Aide] fichiers multiples et palib


xblaster
20/08/2006, 17h39
Bonjour, j'ai testé la palib... nickel... tout marche parfaitement sauf...

que voyant que le makefile était assez... trop complet :)... j'ai voulu faire du fichiers multiple. J'ai donc mis un "bidule.c" dans lequel j'ai rajouté une bête fonction "output". J'ai bien fait mon "bidule.h" avec l'en tête... enfin tout comme il faut et j'obtient un beau...

arm-eabi-g++ -g -mthumb-interwork -mno-fpu -L/m/devkitPro/PAlib/lib -specs=ds_ar
m9.specs bidule.o main.o -Lm:/devkitPro/PAlib//lib -lpa9 -L/m/devkitPro/libnds/l
ib -lnds9 -o build.elf
main.o: In function `main':
m:/devkitPro/myproject/dev1/source/main.c:18: undefined reference to `output'

Alors qu'il m'a bien pris en compte mon bidule.c...

d'ou ma question... "mais qu'est-ce qu'il fait ?" :)

Je dois rajouter mon fichier .c quelque part dans le makefile ?

et quand je le renomme en .cpp... il trouve pu la palib... ... hmmm...

Si vous pouviez m'aider ;)

Dr.Vince
20/08/2006, 18h15
tu dois faire :


#include "bidule.h"


au début de ton fichier main.c

xblaster
20/08/2006, 19h59
tu dois faire :


#include "bidule.h"


au début de ton fichier main.c

oui mais c déjà fait ;)... parce que c pas au linker que j'aurais eu le problème si j'avais pas fait ça, c'est bien avant ;)...

Vu que là c un problème de linker, on dirait que la fonction a pas été ajouté a la table des symboles dans le fichier .o ... c'est douteux...

edit: (d'ailleurs, j'aurais peut pas dû mettre ça dans projet PC mais projet DS :S)

Dr.Vince
20/08/2006, 20h11
heu.... je vois pas où tu vois que c'est un problème de link ??

d'après le message que t'as posté c'est un problème de compilation

et toujours d'après ton messag, tu compile en c++ ?!?


et pour répondre à ta question : non tu n'est pas obligé de rajouter ton fichier dans le makefile si celui-ci se trouve dans le répertoire source, idem avec le répertoire include

xblaster
20/08/2006, 20h36
Voici le code un peu plus complet

arm-eabi-g++ -g -mthumb-interwork -mno-fpu -L/m/devkitPro/PAlib/lib -specs=ds_ar
m9.specs bidule.o main.o -Lm:/devkitPro/PAlib//lib -lpa9 -L/m/devkitPro/libnds/l
ib -lnds9 -o build.elf
main.o: In function `main':
m:/devkitPro/myproject/dev1/source/main.c:20: undefined reference to `output'
collect2: ld returned 1 exit status

Oui je compile en C++ c'est mal ? Tout les exemples se sont compilés comme ça... le problème c'est que tout les exemples n'utilisent qu'un seul fichier :S

edit: oui effectivement, ce n'est pas un problème de linker... hummm... bon tant pis, jvé essayé de trouvé par moi même... il est un peu bizarre le compilo arm au niveau des erreurs. On dirait qu'il est très laxiste...

Dr.Vince
20/08/2006, 21h42
bah si tu fait bien un include et que dans ton .h tu définit bien ta fonction comme ça :


extern void output(u8);



par exemple alors tout devrait fonctionner

sinon balance les sources et je regarderais ce qui cloche, dans ce genre de problème c'est le plus simple et le plus rapide