Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3654 connectés 

 


Dernière réponse
Sujet : [DJGPP] J'ai jamais vu ca!! (undefined reference)
Ace17 ouais ouais c'est encore autre chose ca
bon j'ai trouvé la combine : j'utilise le compilo ms et y'a plus de problemes; mais je garde le linker de djgpp

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Ace17 ouais ouais c'est encore autre chose ca
bon j'ai trouvé la combine : j'utilise le compilo ms et y'a plus de problemes; mais je garde le linker de djgpp
gilou Au fait,  
>int main(void)
mais ta fonction ne retourne pas de valeur.
Ca non plus, un compilo C++ ne devrait pas aimer.
A+,
gilou Notes que ca peut aussi etre un pb avec ta version de gcc, cf le lien suivant: http://archive.linuxfromscratch.or [...] /0798.html
J' ai teste ton source avec le compilo microsoft, il n' y a aucun pb. les deux versions passent sans erreur.
 
A+,

 

[edtdd]--Message édité par gilou--[/edtdd]

gilou

Ace17 a écrit a écrit :

Ben j'utilise djgpp et manifestement il décore les noms des fonctions quand il les met dans un fichier obj. Ca doit etre possible de désactiver ca! Ou alors, que le fichier ou on va référencer la fonction soit capable de retrouver la fonction dont le nom est décoré....
Malheureusement y'a aucune option concernant ca  




Comme tout compilo C++, c'est normal. mais si tous tes .obj ont ete compiles avec le meme compilo, et si ton linker est celui fourni avec ton compilo, ca ne devrait pas poser de probleme.
Par contre, vouloir linker des modules c++ compiles avec des compilos differents, c' est s' exposer aux pires problemes, et je sais de quoi je parle, car je m' escrime a faire ca pour un meme source entre gcc et les compilos natifs a 3 OS Unix (reeussi pour Solaris et HP-UX, ca merde encore pour Aix).
A+,

Ace17 Ben c pas con, et j'y avais pensé
J'avais meme fait : draw_pixel((int)10, (int)10, (char)10);
ca marche pas non plus
je crois que je vais générer mes fichiers obj avec borland pour ensuite pouvoir les lier avec ld de djgpp (pour générer un fichier binaire)
gilou Le probleme est ici a mon avis:
 
>draw_pixel(10, 10, 10);
 
le compilo c++ en deduit que quelque part, tu vas definir une fonction draw_pixel(int, int, int) et de ce fait, il ne considere pas que ton proto precedent (ni la def de la fonction) correspond a cette fonction, car c'est un draw_pixel(int, int, char).
 
un draw_pixel(10, 10, (char) 10);
devrait resoudre le pb, non?
 
Notes que je vois pas a priori ce qui fait que celle qui marchait n' avait pas le meme probleme.
 
A+,
bjone oui, le extern "C" marche, mais ça enlève un _ devant. (je faisait ça ozi avec le watcomC pour mes routines en ASM)
wpk si tu veux ke la decoration disparaisse, tu prefixe ta declaration de fonction par un zoli extern "C" (j'espere seulement ke c'est pas du MS specific :D vu ke sous win, j'utilise ke visual, les makefiles et la ligne de commande ca gonfle profond à la longue)
 
Exemple:
extern "C"
{
void  draw_pixel(int x, int y, char c);
}
Ace17 Y'a quand meme bien quelqu'un sur HFR qui compile du code C++ répandu sur plusieurs avec DJGPP quand meme!
Ace17 Ben j'utilise djgpp et manifestement il décore les noms des fonctions quand il les met dans un fichier obj. Ca doit etre possible de désactiver ca! Ou alors, que le fichier ou on va référencer la fonction soit capable de retrouver la fonction dont le nom est décoré....
Malheureusement y'a aucune option concernant ca
bjone c original ça alors :??:
 
et si tu changes des options de compilation ? (genre optimisations, expansion en ligne... .etc...)
Ace17 Mais quand je change l'extension de mon fichier de cpp vers c la y'a plus d'erreur
Mais moi je veux programmer en C++ pas en C
Ace17 Naaaaaaaaaaaan ............ meme erreur  :sweat:
Fork Essayes en n'écrivant que ça pour le prototype :
 
void draw_pixel(int, int, char);
Ace17 Voici le code source qui marche
 
void draw_pixel(int x, int y, char c)
{
 char* videomem = (char*)0xA0000;
 videomem[x+y*320] = c;
}
 
int main(void)
{
 draw_pixel(10, 10, 10);
 while(1);
}
 
Quelqu'un peut me dire pourquoi ce code la ne marche pas?
 
void draw_pixel(int x, int y, char c);
 
int main(void)
{
 draw_pixel(10, 10, 10);
 while(1);
}
 
void draw_pixel(int x, int y, char c)
{
 char* videomem = (char*)0xA0000;
 videomem[x+y*320] = c;
}
 
Le linker me dit :  
(.eh_frame+0x11):main.cpp: undefined reference to `___gxx_personality_v0'

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)