2012-04-15 2 views
0

Dans mon projet, j'essaie de recharger l'opérateur global new et delete ([] aussi). Et quand je tente de compiler en première fois, je reçois lien erreur:Équivoque du compilateur MS VC++

Main.obj : error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) already defined in LIBCMTD.lib(new.obj)

Lorsque je tente de compiler en deuxième fois, les erreurs disparaissent comme par magie! Mais parfois revenir. Comment résoudre ce problème?

Bibliothèque d'exécution: MTd.

Code:

void operator delete(void * pointer){LALALA} 

Ou

void __cdecl operator delete(void * pointer){LALALA} 

Cette erreur se reproduit quand je ne suivent pas:

  1. Supprimer rechargées nouveau (et d'autres)
  2. Compile
  3. UNE gagner reload
  4. Essayez de compiler et obtenir cette erreur

Dans d'autres cas de disparition d'erreur. Quelle raison pour cela?

+0

Le fichier compile en premier et donne cette erreur. La deuxième fois, l'erreur n'est pas affichée car le fichier n'est pas recompilé s'il n'est pas modifié. S'il vous plaît poster la ligne qui vous donne l'erreur. – gulyan

+0

@gulyan, déjà. –

Répondre

-1

vous devez déclarer implicitement 'nouveau' et 'supprimer' en fonction de membre statique

void * operator new (taille size_t);

opérateur de suppression de suppress (void * p);

+0

Non, les opérateurs statiques sont nouveaux et suppriment aucun appel = ( –

Questions connexes