Multiple définition - C++ - Programmation
Marsh Posté le 09-04-2005 à 14:05:13
1) WXRADAFFI_H n'est pas assez unique, mais ce n'est pas là le problème
2) ici, tu fais à la fois la déclaration et la définition. rajoute un petit extern devant, et fais la définition/initialization dans un fichier .cpp
Marsh Posté le 09-04-2005 à 14:14:31
1) Comment ça pas assez unique ? Tu veut dire qu'il pourrait se trouver déjà dans un autre fichier .h ?
2) Je voi bien que je fait une déclaration de list_sizer mais je voi pas de définition de list_sizer !
Merci, ça fonctionne mnt...
Marsh Posté le 09-04-2005 à 14:17:09
1) ben non, surtout que WX c'est le prffix qu'utilise WX !
fous un truc genre _VINCENT0_NOM_PROJET_NOM_FICHIER_H_
2) et pourtant.
Marsh Posté le 09-04-2005 à 14:44:19
Taz a écrit : 1) ben non, surtout que WX c'est le prffix qu'utilise WX ! |
Pour être précis, c'est _WX.
Et justement, c'est mal en théorie. Je cite le standard:
Citation : 17.4.3.1.2 Global names |
La façon dont je comprend ça: ces symboles sont réservés pour ton compilo, ni pour toi, ni pour le standard C++.
Marsh Posté le 09-04-2005 à 17:33:06
ah oui merde, c'est vrai. c'est juste pour pas mélanger vraies macros et include-gardes. T'as raison. faut donc en rejouter une couche /D
Marsh Posté le 06-06-2005 à 16:02:54
Bonjour,
Je suis en train de continuer une application en C++
J'ai les codes sources et tout , les logiciels de développement (Dev-cpp, wxWindow)
Le problème, c'est que j'ai des erreurs de Linking (aucune de compil):
Citation : data.cpp C:\Dev-Cpp\lib\libwxmsw.a(data.o)(.data$_ZTV12wxWindowList+0x0) multiple definition of `vtable for wxWindowList' |
voici l'entête de CFenêtrePrinc.cpp :
Citation : #include "CFenetrePrincipale.h" |
et celui de CFenetrePrinc.h :
Citation : #include <wx/wx.h> |
Ca ressemble à l'erreur de vincent0 mais je vois pas où elle est !!
Merci d'avance !
Marsh Posté le 06-06-2005 à 16:16:17
mais non ... il te faut une déclaration extern dans un .hpp et une définition dans un .cpp
Marsh Posté le 06-06-2005 à 17:05:30
Désolé, je débute en C++
l'extern, je le met devant quoi ?
je n'ai pas de wxWindowList dans mes fichiers.
en plus je retrouve l'erreur dans seulement 4 fichiers alors que j'ai 19 fichiers.
dans aucun des autres fichiers je n'ai d'extern et ils ne donnent pas d'erreur.
je sais vraiment plus quoi faire !!
Marsh Posté le 07-06-2005 à 11:21:24
est ce que ce serait pas un prob de bibliothèque au niveau des parametres du linker?
(libwxmsw.a)
Marsh Posté le 14-06-2005 à 15:05:36
Bonjour,
je me suis dit de tout reprendre à 0
voila ce que ca a donné :
Main.cpp :
Citation : #include "wx/wxprec.h" |
MyFrame1.h :
Citation : // -*- C++ -*- generated by wxGlade 0.3.3 on Tue Jun 22 10:08:31 2004 |
MyFrame1.cpp :
Citation : // -*- C++ -*- generated by wxGlade 0.3.3 on Tue Jun 22 10:08:31 2004 |
Je pensais que ça marcherait mais :
Citation : |
exactement la meme erreur qu'avt .
La le fichier était plus petit alors je pensais trouver l'erreur, mais non ...
Si tu pouvais me dire ou mettre le extern, je te ferais une statue !!!
merci
Marsh Posté le 15-06-2005 à 12:46:39
Ca y est, ca marche !!!
Ca n'avait rien a voir avec "extern"
A priori, ce serait un probleme de la version 4.9.9.0 que j'utilisais !
Ou bien un probleme entre devCpp et wxGlade.
maintenant avec la 4.9.9.2 tout fonctionne !
Marsh Posté le 15-06-2005 à 12:51:02
ben ton problème initiale a avoir avec extern. Seulement là c'est pas le même problème. Mais tant que tu décideras pas d'apprendre un peu le C++, t'en seras réduit à cuisiner 'et si je rajoute ce mot-magique est-ce que ça marche' ...
Marsh Posté le 09-04-2005 à 13:42:22
Bonjour,
Dans un fichier .h j'ai ceci:
J'ai plusieur fichier .cpp qui include le fichier .h ci-dessous et il ne touche pas à la variable list_sizer.
Lors du linkage voici une parti du message d'erreur, pourquoi ?:
obj/fen.o(.bss+0x48):fen.cpp: multiple definition of `list_sizer'
obj/proprietes.o(.bss+0x48):proprietes.cpp: first defined here
obj/aff_fen.o(.bss+0x43c):aff_fen.cpp: multiple definition of `list_sizer'
obj/proprietes.o(.bss+0x48):proprietes.cpp: first defined here
obj/button.o(.bss+0xf8):button.cpp: multiple definition of `list_sizer'
....
Merci d'avance...