Errore Linker 2005, 2001 in Visual Studio 2008
-
06-07-2019 - |
Domanda
Ho un progetto COM ATL che si stava compilando bene in VC6 che fornisce i seguenti errori del linker quando compilato in VS2008.
errore LNK2005: " void * __cdecl operatore nuovo (int senza segno) " (?? 2 @ YAPAXI @ Z) già definito in libcmt.lib (new.obj) File: uafxcw.lib
Esistono altri tre errori simili per delete
, new []
e delete []
.
Ho controllato diversi articoli in rete e la maggior parte di loro afferma che è un conflitto tra dll CRT e MFC. (Ordine in cui vengono raccolti). Un articolo suggerisce di aggiungere la lib in conflitto all'elenco delle librerie ignorate nelle impostazioni del progetto.
In questo modo, mi rimane un errore:
errore LNK2001: esterno non risolto simbolo __afxForceEXCLUDE File: LMAN.Lib
L'errore punta a una lib a cui fa riferimento questo progetto (una lib sviluppata da noi).
Qualche idea su come risolvere questo problema? Sono sicuro che questo sarebbe un problema comune per le persone che migrano verso VS 2008.
Soluzione
Risolto.
Non è stato necessario escludere uafxcw.lib. Dovevo solo assicurarmi che le DLL MFC non fossero usate. La nostra lib LMAN.lib utilizzava Afxdisp.h (una DLL MFC) che non era richiesta. Ho rimosso l'inclusione da quel progetto e poi voilà! - build completata.