Recientemente, mientras trabajaba en VC 6.0, encontré un error muy molesto en varios lugares. Se produce el siguiente error: Vinculando... nafxcwd.lib(afxmem.obj): error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) ya definido en LIBCMTD.lib( new. obj) nafxcwd.lib(afxmem.obj): error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) ya definido en LIBCMTD.lib(dbgdel.obj) Debug/DCap exe: Error fatal LNK1169: se encontraron uno o más símbolos definidos de forma múltiple Solución: para tal error, es obvio que ambas bibliotecas vinculadas proporcionan funciones con el mismo nombre. Pero, por supuesto, no es posible ignorar directamente LIBCMTD.lib, porque es una biblioteca C. La razón por la que ocurre este problema es porque la biblioteca de MFC entra en conflicto con la biblioteca de C y se debe establecer el orden en el que están vinculadas, es decir, primero nafxcwd.lib y luego LIBCCMTD.lib. Pero ambas son bibliotecas predeterminadas, entonces, ¿cómo establecer su orden? Solución: ignórelos primero y luego agréguelos adicionalmente. Es decir: Ingrese: nafxcwd.lib libcmtd.lib en Ignorar bibliotecas en la pestaña Enlace, luego ingrese: nafxcwd.lib libcmtd.lib en Módulos de objeto/biblioteca en la misma pestaña. De esta manera, el orden en el que se agregan se convierte en el orden que nos vemos obligados a establecer. ?
Expandir