Comment faire tenir du code source sur plusieurs fichiers avec djgpp? - Programmation
Marsh Posté le 14-11-2001 à 00:52:01
pkoi tu ne compiles pas simplement par
gcc -o kernel.bin main.cpp gfx.cpp
__Z9DrawPixeliic ca c'est normal c'est un nom decoré, à la fin par exemple t'as les types des parametres : iic pour int int char
c'est donc pas forcement sur le drawpixel qu'il y a un bleme...
Marsh Posté le 14-11-2001 à 13:03:20
Ben en fait si je compile pas par la commande "simple" c'est parce qu'en fait j'ai aussi un fichier en assembleur a ajouter dans le fichier binaire final...
Marsh Posté le 14-11-2001 à 20:22:19
Essayes ça pour le prototype de drawpixel dans main.c :
Extern DrawPixel(int, int, char);
Le mot clé "Extern" indique au compilateur que la fonction "DrawPixel" proviendra d'un autre fichier objet.
Marsh Posté le 14-11-2001 à 22:01:15
Non ca marche pas meme erreur...Par contre j'ai découvert un truc : mes fichiers ont pour extension cpp; Si je met c uniquement la ca marche. Le probleme c'est que moi c'est du c++ que je veux compiler plus tard
Marsh Posté le 13-11-2001 à 23:51:27
J'ai un fichier main.cpp et un fichier gfx.cpp
Le fichier gfx contient le code d'une fonction dont voici la déclaration :
DrawPixel(int x, int y, char c);
A la compilation tout se passe bien, seulement quand je lie les fichiers il me dit qu'il ne peut pas trouver la fonction "__gxx_personality". Ok je suppose que ce doit etre comment le compilateur a nommé ma fonction DrawPixel, puisque quand je ne l'invoque plus dans main.cpp tout se compile nickel.
En fait en ouvrant gfx.obj généré par gcc je m'apercois que le nom DrawPixel a completement disparu; Y'a un truc qui ressemble, mais ca s'appelle __Z9DrawPixeliic.
Comment faire pour ne pas perdre, lors de la compilation, le nom des fonctions que l'on va exporter?
Voila comment je compile :
gcc main.cpp -c -o bin\main.o
gcc gfx.cpp -c -o bin\gfx.o
ld --oformat binary -Ttext 1000 main.o gfx.o -o kernel.bin
Pitié aidez moi!!!