2011-01-28 16 views
5

Estoy trabajando en un proyecto COM heredado de C++ que me estoy moviendo a Visual Studio 2010. En el archivo IDL para este proyecto, tengo que hacer referencia a un archivo ODL desde otro proyecto C++. Mi problema es que el otro proyecto genera su archivo de encabezado como $ (filename) _h.h. Cuando mi archivo IDL genera su archivo de encabezado, genera el nombre de archivo ODL como $ filename.h, y no puede hacer referencia al archivo correcto.Cambiar el archivo de encabezado generado por IDL

En otras palabras, en mi archivo IDL ("MyIDLFile.idl") Tengo una declaración como

importación "MyODLFile.odl"

en el que el archivo generado ("MyIDLFile.h") se convierte en

incluyen "MyODLFile.h"

cuando lo necesito para generar

incluyen "MyODLFile_h.h"

¿Cómo especifico el nombre de archivo que deseo que el IDL genere en una declaración de importación?

Respuesta

2

No estoy seguro de lo que quiere decir con la declaración de importación, pero lo que está buscando se puede encontrar en Propiedades del proyecto. Vaya a la ventana de propiedades (Alt-F7) y en "Propiedades de configuración/MIDL/Salida", tendrá la oportunidad de declarar el archivo de encabezado que desea que cree. Como su proyecto es heredado, puede ser más fácil simplemente eliminar la "_h" del nombre del archivo de encabezado (por ejemplo, $ (ProjectName) .h en lugar de $ (ProjectName) _h.h). Ver http://support.microsoft.com/kb/321274 por un lil más información.

+2

Esta es la declaración de importación a la que hace referencia el OP: http://msdn.microsoft.com/en-us/library/ windows/desktop/aa367047.aspx Lo que sucede cuando se usa esto es que el encabezado MIDL generado para el IDL dependiente contendrá un incluir para el otro encabezado. Parece usar el mismo nombre que el O Archivo DL con el sufijo ".h". No entiendo por qué lo hace cuando Visual Studio usa de forma predeterminada "% (Filename) _h.h" para el nombre de archivo de encabezado generado por MIDL. Así que al usar los valores predeterminados nunca puedes importar esos archivos IDL/ODL a otro. – Steiny

0

Esto parece ser un problema común, no he podido encontrar ninguna buena solución, pero una solución es añadir un '_i" a sus archivos IDL, por ejemplo EquipmentConstants_i.idl

Microsoft hace referencia una/header compile switch pero no he podido hacer que funcione (midl /header switch).

Cuestiones relacionadas