CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme d' include chiant comme un Lori

n00ble55
n00ble55
Niveau 4
31 octobre 2006 à 21:00:55

YO,

J´ai 3 fichiers, un cpp avec le main appellons le a.cpp un autre, b.cpp avec les fonctions utilisées et c.h avec les includes les libs et les declarations de toutes les fonctions. Or dans a.cpp j´ ai comme erreur :
iostream.h:31, from c.h In file included from iostream.h:31, from c1
c.h:7, from a.cpp from c.h:7, from a.cpp .h

J´y pije que dalle surtout que tout marchait bien jusqua que je rajoute une fonction que j´ ai bien sur essayer d´ enlever par la suite mais ne resolvant pas le probleme.

++
Merci d´ avance,
Putain de compileur de merde

-pedrolan-
-pedrolan-
Niveau 7
31 octobre 2006 à 22:08:05

Salut est-ce que tu peux nous montrer ton code pour qu´on puisse plus facilement t´aider stp?

n00ble55
n00ble55
Niveau 4
31 octobre 2006 à 22:23:59

Je pense pas que mon code puisse t´ aider ( en plus jsuis sur que t´ as pas le temps d´ eplucher un millier de lignes pour un truc qui me semble plus general)

Ca doit etre un probleme de linkage ou un de ses trucs qui nous font aimer l´ asm.

guyver2
guyver2
Niveau 10
31 octobre 2006 à 22:40:32

tu inclus peut-etre deux fois le meme fichier.

genre dans a.cpp et b.cpp tu as

  1. include "c.h"

jusque la pas de pb mais il faut (je pense) ecrire c.h de cette forme

  1. ifndef C_H
  2. define C_H

... le corp de c.h ...

  1. endif
godrik
godrik
Niveau 30
31 octobre 2006 à 23:51:06

je penses qu´un extrait de code nous aiderai a comprendre ce qui se passe...

n00ble55
n00ble55
Niveau 4
01 novembre 2006 à 08:29:50

J´ ai deja essayer le truc des #ifndef..

pour le code voici le "resume" :

a.cpp :

  1. include "c.h"

int main(){.....f();...}

b.cpp :

  1. include "c.h"

double f(.)
{....}
char *f1(..)
{.....}
.....

c.h
/*Tous les headers utilisé*/

  1. include <windows.h>

.......

/*defines*/

  1. define n00b 0

...

/*Variables globales*/
int bla;
....

/*Structures*/
struct structures
{
variables
...
};

/*Prototypes de toutes les fonctions utilisés*/
int main();
double f();
....

    • ***************

Avant je n´ avais que 2 fichiers (a et b) sa marchait j´ ai rajouté une fonction sa a bugé je l´ ai enlevé le bug est resté.
D´ ou le rajout du 3 eme fichier.

n00ble55
n00ble55
Niveau 4
01 novembre 2006 à 09:11:02

Ha ! j´ avais ecrit

  1. include <iostream.h> ( dans c.h )

j´ avais un warning ( sa fait toujours sa quand on inclus aussi windows )

j´ ai viré le .h et.. J´ ai changé d´ erreur !

Makefile.win [Build Error] [Project.exe] Error 1

Hehe j´ y pije rien non plus mais ptetre que sa vous dit quelque chose.

++
Vive l assembleur !

n00ble55
n00ble55
Niveau 4
01 novembre 2006 à 10:16:40

Dsl pour le triple post mais le probleme a encore changé. J´ ai refait un rebuild all et un

"b.cpp multiple definition of `variable´" et 74 de ses amis sont arrivés.

De plus tous ces messages concernent une innocente ligne de creation de thread qui n´ a rien a voir et n´ utilise aucune des 75 variables
pointé par ce compilo.

Puis rebuildage et cette fois ci ya aussi multiple definition des fonctions.
Sa me fait 111 erreurs sur la meme lignes ( Yes ! record battu ).

Mon compilo devient gateux ou quoi ?

Merci d´ avance,
++

Assembler c ´est gagner.

godrik
godrik
Niveau 30
01 novembre 2006 à 12:02:00

bah c´est normal que ca fasse ca
puisse que chaque fichier déclare une variable globale du meme nom, le compilateur crée une variable globale par fichier objet. Donc l´étape de linkage se passe mal puisse plusieurs objets ont le meme nom dans la table des symbols.

Pour partager une variable globale entre plusieurs fichiers objet, il faut l´initialiser dans un des fichiers .c et la déclarer ´extern´ dans les autres.
a.c:
int toto;
...

b.c:
extern int toto;
...

En faisant cela, tu lui dit que toto est un symbol qu´il aura au linkage et pas a la compilation.

n00ble55
n00ble55
Niveau 4
01 novembre 2006 à 12:11:55

Merci godrik.
Mais y reste quand meme l´ erreur
Makefile.win [Build Error] [Project.exe] Error 1

n00ble55
n00ble55
Niveau 4
01 novembre 2006 à 12:29:06

Sa y est le probleme est ciblé :

Soit je mes un pragma comment pour la lib winsock2
, ya plus l´ erreur mais jpeux pas utiliser les fonctions winsock soit je le mes dans le project option : linker et sa me mes l´ erreur.

Je suis sous dev c ´est quoi ce bordel

++

Assembler for winner

dnob700
dnob700
Niveau 10
01 novembre 2006 à 12:45:38

Je ne crois pas que dev c++ connaisse le pragma comment lib. (c´est une option de VC++). Il faut donc le mettre dans les options du linker.

tu n´a pas une info plus détaillé pour ton erreur ? genre ce que le makefile affiche avant ça (car là il dit juste qu´un outil, mais on sait pas lequl a merdé).

Pour les variable globales, une méthode plus simple est de définire :

extern int i;
dans le .h et
int i;
dans le a.c

et comme ça, c´est accessible dans tout tes autres fichiers sans avoir besoin de la remettre.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment