Recentemente, enquanto trabalhava no VC 6.0, encontrei um erro muito irritante em vários lugares. Ocorre o seguinte erro: Vinculando... nafxcwd.lib(afxmem.obj) : erro LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) já definido em LIBCMTD.lib( new. obj) nafxcwd.lib(afxmem.obj): erro LNK2005: "void __cdecl operador delete(void *)" (??3@YAXPAX@Z) já definido em LIBCMTD.lib(dbgdel.obj) Debug/DCap exe: erro fatal LNK1169: um ou mais símbolos definidos por multiplicação encontrados Solução: Para tal erro, é óbvio que ambas as bibliotecas vinculadas fornecem funções com o mesmo nome. Mas é claro que não é possível ignorar diretamente LIBCMTD.lib, porque é uma biblioteca C. A razão pela qual esse problema ocorre é porque a biblioteca do MFC entra em conflito com a biblioteca do C e a ordem em que eles estão vinculados deve ser definida, ou seja, primeiro nafxcwd.lib e depois LIBCCMTD.lib. Mas ambas são bibliotecas padrão, então como definir sua ordem? Solução: ignore-os primeiro e depois adicione-os adicionalmente. Isso quer dizer: Digite: nafxcwd.lib libcmtd.lib em Ignorar Bibliotecas na guia Link e, em seguida, insira: nafxcwd.lib libcmtd.lib em Módulos de objeto/biblioteca na mesma guia. Desta forma, a ordem em que são adicionados torna-se a ordem que somos obrigados a definir. ?
Expandir