2009-03-12 6 views
5

Sto tentando di creare un nuovo oggetto COM nel mio DLL utilizzando il Oggetto semplice ATL guidata in Visual Studio 2005.ATL wizard semplice oggetto - "Oggetto Xxx esiste già" l'errore

ho immettere il nome breve per l'oggetto e tutti gli altri campi sono derivati.

Tuttavia, quando si fa clic Successiva nella procedura guidata, il seguente messaggio di errore viene in su:

Object 'IXxxInterfaceName' already exists 

Ho cercato tutta la mia soluzione per tutti i riferimenti a IXxxInterfaceName e non riesco a vederlo definito da nessuna parte.

In che modo la procedura guidata stabilisce che esiste già?

risposta

2

Non ho mai scoperto perché il wizard ha determinato che il nome dell'oggetto esisteva già - Sto indovinando che qualcosa è stato memorizzato nella cache da qualche parte che non ho potuto rintracciare.

Alla fine, ho aggiunto un 2 alla fine del nome dell'interfaccia al momento della sua creazione che ha permesso di aggiungerlo. Quindi ho sostituito tutte le occorrenze di IXxxInterfaceName2 con IXxxInterfaceName. Tutto ha funzionato dopo questo.

Se riesco a rintracciare la causa principale di questo problema, aggiornerò la risposta.

+0

Il problema esiste ancora ed è il 2015. Eliminare un 'oggetto semplice ATL' esistente significa che non è possibile rigenerarlo. Almeno non ho trovato un modo per farlo. Ho persino fatto ricorso alla pulizia del registro dai tentativi precedenti. Microsoft non ha mai avuto fino a questo problema. – rtischer8277

+0

Una soluzione alternativa a questo errore di generazione di codice ATL-Simple-second-time-around-around-around è la creazione di un nuovo progetto MFC con Automation. Aggiungi una nuova classe di tipo Oggetto semplice ATL. Quindi copia il nuovo generato. .... rgs e .h e .cpp file nel tuo progetto. – rtischer8277

+0

Controlla il tuo file .idl. La creazione di un 'oggetto semplice ATL' aggiunge istruzioni di interfaccia. Elimina tutte queste righe aggiunte e l'errore scompare. – rtischer8277

1

È definito in una libreria a cui si fa riferimento?

+0

Potrebbe essere. Riesci a pensare a un modo semplice per capirlo senza dover ricorrere alla forza bruta per ogni biblioteca a cui mi riferisco? – LeopardSkinPillBoxHat

+0

In realtà ora che ci penso, non è molto probabile che venga usato in una libreria di riferimento. Il nome dell'interfaccia ha un prefisso standard utilizzato da tutte le interfacce nel nostro prodotto. Quindi dubito che eventuali librerie di terze parti utilizzino lo stesso nome. – LeopardSkinPillBoxHat

+0

vero. è strano cosa succede se stai tagliando leggermente il nome? –

0

Si verifica anche in VS 2008. Tuttavia, la soluzione Pulita e il progetto Pulisci dall'opzione di generazione risolve questo :-)