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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top