Comment faire tenir du code source sur plusieurs fichiers avec djgpp?

Comment faire tenir du code source sur plusieurs fichiers avec djgpp? - Programmation

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. :ouch:  
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!!!  :cry:  :cry:  :cry:

Reply

Marsh Posté le 13-11-2001 à 23:51:27   

Reply

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...

Reply

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...

Reply

Marsh Posté le 14-11-2001 à 13:07:12    

D'ailleurs ca me fait la meme erreur avec ta commande  :sweat:

Reply

Marsh Posté le 14-11-2001 à 14:07:42    

up please  :hello:

Reply

Marsh Posté le 14-11-2001 à 17:12:06    

up

Reply

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.

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed