ththththth
Messages postés10Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention 2 mars 2007
-
14 févr. 2007 à 10:48
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
14 févr. 2007 à 20:28
Bonjour à tous.
Voila je passe de devCpp a visual .net et j'ai déjà un problème avec les mfc (snif).
L'application est basée juste sur une boite de dialogue générée par visual (2005).
Je me retrouve avec les fichiers :
-FontDesigner.h
-FontDesignerDlg.h
et les équivalents .cpp
ainsi que les resource et stdafx
Je dessine mon IHM ... tout va bien.
J'aimerais maintenant me servir de classes et fichiers .h de fonctions, mais je n'arrive pas à les inclure sans erreurs.
J'ai fais un petit fichier de test : fonc.h
#ifndef FONC_H
#define
FONC_H#pragma
once
int add(int x, int y){return (x+y);}
#endif
Puis je veux l'inclure dans FontDesignerDlg.h. (Si je l'inclue dans FontDesignerDlg.cpp ca marche, mais le but est d'inclure une classe (X) pour ajouter une variable de type (X) à la classe FontDesignerDlg).
J'obtiens alors les erreurs :
FontDesignerDlg.obj : error LNK2005: "int __cdecl add(int,int)" (?add@@YAHHH@Z) déjà défini(e) dans FontDesigner.obj
1>FontDesigner\FontDesigner\Debug\FontDesigner.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
1>Le journal de génération a été enregistré à l'emplacement "FontDesigner\FontDesigner\Debug\BuildLog.htm"
1>FontDesigner - 2 erreur(s), 2 avertissement(s)
J'ai compris que le problème vient d'inclusions multiples, mais je ne comprends pas comment sachant que je place des ifndef + des #pragma once sur chaque fichier.
Dans le .h de la classe FontDesignerDlg :#pragma
once#include
"afxwin.h"#include
"afxcmn.h"
#include"fonc.h"
Debutant sur visual, j'essaie de batailler avec les propriétés de mon projet, mais beaucoup de choses ne sont pas encore très claires tellement il y a de paramètres....
Voila en gros mon problème. Si j'ai été assez clair et si quelqu'un veut et peut m'aider alors un grand merci d'avance.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 14 févr. 2007 à 13:00
Ca n'a rien a voir avec des pbs de macro (ifndef ou autre) c'est un pb de lien. Le pb est que tu mets le code de la fonction dans .h alors qu'il doit etre dans le .cpp.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 14 févr. 2007 à 13:22
Salut, a mon avis :
Problème d'entete précompilée :
Il suffit d'inclure stdafx.h au début de fonc.h
OU
Demander que CE module ne fasse pas partie de l'entete précompilée dans les options du fichier .h/.cpp
ththththth
Messages postés10Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention 2 mars 2007 14 févr. 2007 à 13:43
hello luthor
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Ca n'a rien a voir avec des pbs de macro (ifndef ou autre) c'est un pb de lien. Le pb est que tu mets le code de la fonction dans .h alors qu'il doit etre dans le .cpp.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Le problème de mettre le code dans le .cpp : ca marche pour une fonction, mais pas pour les classes.
hello yann_lo_san
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Il suffit d'inclure stdafx.h au début de fonc.h
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
idem
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Demander que CE module ne fasse pas partie de l'entete précompilée dans les options du fichier .h/.cpp
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
je cherche encore dans les propriétés du projets...
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 14 févr. 2007 à 20:28
Il ne faut pas se prendre la tete, il faut juste suivre 2 principes :
1 - Lever pour le nouveau module la gestion d'entete précompilée
2 - Ne rien inclure dans le nouveau .h et inclure stdafx.h dans le nouveau .cpp