2011-01-28 16 views
5

Sto lavorando a un progetto legacy C++ COM che sto passando a Visual Studio 2010. Nel file IDL per questo progetto, devo fare riferimento a un file ODL da un altro progetto C++. Il mio problema è che l'altro progetto genera il suo file di intestazione come $ (nomefile) _h.h. Quando il mio file IDL genera il suo file di intestazione, genera il nome file ODL come $ filename.h e non può fare riferimento al file corretto.Modifica file di intestazione IDL generato

In altre parole, nel mio file IDL ("MyIDLFile.idl") Ho una dichiarazione come

importazione "MyODLFile.odl"

che nel file generato ("MyIDLFile.h") diventa

includono "MyODLFile.h"

quando ne ho bisogno per generare

includono "MyODLFile_h.h"

Come specificare il nome del file che voglio che l'IDL generi in una dichiarazione di importazione?

risposta

2

Non sono sicuro di cosa intendi per la dichiarazione di importazione, ma quello che stai cercando potrebbe essere trovato nelle Proprietà del progetto. Vai alla finestra delle proprietà (Alt-F7) e in "Proprietà di configurazione/MIDL/Output", avrai la possibilità di dichiarare il file di intestazione che desideri creare. Dal momento che il tuo progetto è legacy, potrebbe essere più semplice rimuovere semplicemente "_h" dal nome del file di intestazione (ad esempio $ (Nome progetto) .h anziché $ (Nome progetto) _h.h). Vedi http://support.microsoft.com/kb/321274 per maggiori informazioni.

+2

Questa è la dichiarazione di importazione a cui fa riferimento l'OP: http://msdn.microsoft.com/en-us/library/ windows/desktop/aa367047.aspx Ciò che accade quando si utilizza questo è che l'intestazione generata da MIDL per l'IDL dipendente conterrà quindi un include per l'altra intestazione. Sembra che usi lo stesso nome di O File DL con il suffisso ".h". Non capisco perché lo fa quando Visual Studio utilizza per impostazione predefinita "% (Nomefile) _h.h" per il nome del file di intestazione generato da MIDL. Quindi, utilizzando i valori predefiniti non è possibile importare i file IDL/ODL in un altro. – Steiny

0

questo sembra essere un problema comune, non sono stato in grado di trovare qualsiasi buona soluzione, ma una soluzione è quella di aggiungere un '_I" per i file IDL, ad esempio EquipmentConstants_i.idl

Microsoft fa riferimento un/opzione di compilazione intestazione, ma non sono riuscito a farlo funzionare (midl /header switch).

Problemi correlati