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

Compilo bourré ?

sn00bino
sn00bino
Niveau 5
13 février 2007 à 18:56:57

En effet il voit double :

10 C:\...\util.cpp multiple definition of `init(IDirect3D9**, IDirect3DDevice9**, HWND__*)´

10
C:\Dev-Cpp\truc\Testing\main.o(.text+0x0):C:\Dev-C
pp\truc\Testing\util.cpp first defined here

et pareil pour toutes les fonctions du fichier.

Je vous aime,
++

Fvirtman
Fvirtman
Niveau 10
13 février 2007 à 19:32:23

En général, ce n´est pas la faute de du compilo, mais de l´utilisateur : donc c´est a toi de ralentir sur la bibine.

vérifie tes include : tu dois inclure 2 fois le meme header (celui ou il y a les multiples définitions) de maniere indirecte pour le meme fichier cpp.

sn00bino
sn00bino
Niveau 5
13 février 2007 à 21:06:23

fichier 1 :
include "fichier2"
fonctionfichier1();

fichier 2 :
include <d3d9.h>
include <windows.h>
include <d3dx9.h>

fonctionfichier1()
{
...
}

godrik
godrik
Niveau 30
14 février 2007 à 00:06:38

il semblerait que tu ai deux fonction avec les meme parametre dans ton code.
Ou peut etre le meme fichier linké deux fois.
En l´occurence il semblerait que l´un soit déclaré dans main.cpp et l´autre dans util.cpp

En regle général, on n´inclue pas de fichier de code sauf si l´on sait précisement ce que l´on fait.
Visiblement ce n´est pas ton cas.

D´expérience le compilateur n´est jamais bourré, c´est généralement l´utilisateur qui a fait une erreur.... ici ton inclusion malencontreuse.

sn00bino
sn00bino
Niveau 5
14 février 2007 à 11:17:03

Ba non justement. Et j´ ai l´ impression de savoir ce que je fais.

J´ avais des fonctions qu´ il me semble utile pour plusieurs applications du meme type. Je les regroupe dans un fichier. Ce fichier a besoin de 3 include donc voici le fichier util :

include <d3d9.h>
include <windows.h>
include <d3dx9.h>

void f(....)
{
}

et le main :

include "util.cpp"

int WINAPI WinMain(.....)
{
f(......);
}

J´ ai verifié plusieurs fois, deplus le code est tres court ( 50 lignes ). Je pense pas avoir fais de multiple definition ( sinon le compilateur me l´ aurait indiqué )

godrik
godrik
Niveau 30
14 février 2007 à 12:15:54

En plus tu n´as pas bien lu ce que j´ai écris...

la fonction f est défini dans l´objet binaire util.o

Mais aussi dans main.cpp a cause de:

  1. include "util.cpp"

Apprends le C avant de vouloir faire de la 3D...

sn00bino
sn00bino
Niveau 5
14 février 2007 à 12:24:31

alors que devrais - je faire pour inclure correctement ce fichier ?

godrik
godrik
Niveau 30
14 février 2007 à 14:56:34

Fvirtman propose un bon cours de C++ sur son site web.
l´adresse est dans sa carte de visite.
Je te recommande de le lire.

sn00bino
sn00bino
Niveau 5
14 février 2007 à 15:36:40

J´ ai commencé le C avec ces tutos. Et tu ne reponds pas a ma question.

Je ne veux pas forcement une reponse toute faite.
Une regle a suivre ou une explication m´ irait parfaitement. Et je reconais avoir pas mal de lacune en C.

"la fonction f est défini dans l´objet binaire util.o

Mais aussi dans main.cpp a cause de:

  1. include "util.cpp" "

Je te dis ce que je comprends :

Quand j´ inclus "util.cpp" dans le main, il est compilé a la fois dans le main.o et le util.o.

Et jvois pas ce que je peux en tirer.

godrik
godrik
Niveau 30
14 février 2007 à 15:45:07

tout a fait

  1. include fait un "copier/coller" du code

donc c´est "comme si" tu écrivais la fonction deux fois

J´imagine que tu as fais ca parceque tu voulais avoir un access a la fonction zorglub dans main.cpp
ce qu´il faut faire, c´est déclarer que la fonction zorglub existe SANS la définir.
Cela ce fait en utilisant des prototypes de fonction.
C´est prototype sont en général placé dans des fichiers .h qui seront inclut dans les différents .cpp qui en ont besoin.

Un conseil: ne commences pas le C par la partie difficile (graphisme en 3D avec directX), tu ne t´en sortira probablement pas. Commence par simple: trier des tableau, ecrire une liste chainé, remplacer tous les ´e´ d´un fichiers par des ´a´...

sn00bino
sn00bino
Niveau 5
14 février 2007 à 15:51:19

Ha merci beaucoup, sa marche.

Je pense pouvoir faire de la 3D parceque j´ ai pas mal de bases.

godrik
godrik
Niveau 30
14 février 2007 à 16:46:09

de la 3D peut etre. Mais du C, visiblement non...

sn00bino
sn00bino
Niveau 5
14 février 2007 à 19:25:00

Je connais pas mal de C et C++. Mais c ´est vrai que j´ ai toujours eu du mal avec les include.

Merci a toi.

sn00bino
sn00bino
Niveau 5
15 février 2007 à 11:55:20

Et maintenant sa compile plus du tout. Aucun .o généré, aucune erreur, sa passe directement au linkage qui bug donc. Et je suis obligé de redemarer DevCpp.

D´ habitude la compilation prend bien 10 secondes ( mon ordi est tres lent ).

Le code utilisé marche sur un projet identique mais qui a été créé avant.

Merci d´ avance,
++

sn00bino
sn00bino
Niveau 5
17 février 2007 à 18:31:52

path trop long = pas de compilation

dire que j´ ai failli me suicider pour sa.

dnob700
dnob700
Niveau 10
18 février 2007 à 00:16:46

on est en 2007 et ce genre de bogue arrive encore ...

gollumkawder
gollumkawder
Niveau 10
21 février 2007 à 22:17:00

Moi je me souviens d´une fois ou le compilo était bourré =) sur une optim..c´etait le bon temps

:dehors:

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