2009-03-12 9 views
1

Nous venons d'avoir un nouveau développeur et j'essaie de le configurer avec Dev Studio 2005 (la version que nous utilisons tous dans ce bureau), et nous rencontrons un problème étrange que je n'ai jamais vu auparavant.Visual Studio 2005 ignore les directives du préprocesseur lors de la compilation

J'ai du code qui fonctionne parfaitement sur mon système, et il n'arrive pas à le compiler. Nous avons suivi le problème jusqu'à sa copie de dev studio en ignorant les directives du préprocesseur. Par exemple, dans les propriétés de projet sous Directives C/C++ | Préprocesseur | Préprocesseur, j'ajoute DEFINE_ME. Ce qui devrait se traduire par un/D "DEFINE_ME" pour le compilateur. Et ça se passe dans mon environnement de développement, mais pas sur le sien.

J'ai vérifié que lorsqu'il extrait le code du référentiel source, il a la même version du code que je fais. Et si je regarde dans ses propriétés de projet, toutes les directives sont là. Pour une raison quelconque, ils ne sont tout simplement pas transmis au compilateur.

Des idées?

+0

Quels types de messages d'erreur obtenez-vous? – erikkallen

+0

Juste compilez les erreurs parce que le matériel de préprocesseur n'est pas là. Par exemple, #ifdef DEFINE_ME printf ("hello defined world") #endif entraînera que printf ne sera jamais compilé même si/DDEFINE_ME est sur la ligne de commande. – miked

+0

Avez-vous essayé de mettre les définitions dans un en-tête plutôt que dans les propriétés du projet? C'est beaucoup plus fiable. – Puppy

Répondre

2

J'ai récemment rencontré le même symptôme avec VS2005. En fin de compte, j'ai pu le résoudre en ajoutant explicitement mon préprocesseur définit via la ligne de commande - dialogue Options supplémentaires:

Configuration Propriétés -> C/C++ -> ligne de commande

Quand j'ai ajouté '/DPROPERTY Là, il a été reconnu au moment de la compilation, alors que l'ajouter sous 'Preprocessor -> Preprocessor Definitions' n'a rien fait. Bizarrement la boîte de dialogue de ligne de commande a montré que Visual Studio ajoutait la propriété à la ligne de commande, mais sous la forme '/D "PROPERTY"'. Malheureusement, je n'ai pas été en mesure de comprendre le problème sous-jacent, ni pourquoi il semble fonctionner hors de la boîte pour certains de nos projets, mais Pas d'autres. Néanmoins, la solution ci-dessus vaut le coup si vous avez ce symptôme.

Aussi, crédit où le crédit est dû: l'idée est venue de this thread.

3

Assurez-vous que la configuration de projet en cours de construction dans la configuration de solution sélectionnée est la même que celle pour laquelle vous configurez les propriétés et/ou que vous configurez les propriétés pour toutes les configurations de projet. Un problème courant avec les nouvelles installations VS est que la configuration de la solution active actuelle est spécifique au système et peut par défaut ne pas correspondre à la vôtre (ex: Release vs Debug).

Vous pouvez voir le projet config dans la sortie de construction et/ou le vérifier dans le gestionnaire de configuration.

+0

Merci Nick, j'ai oublié de mentionner que j'ai vérifié cela.Nous essayons simplement de construire la version Debug standard de Win32 et nous avons vérifié que la sortie de génération est la version que nous avons l'intention de construire. Et la directive du préprocesseur est définie (au moins en fonction des pages de propriétés) pour cette configuration – miked

Questions connexes