2011-01-28 92 views
5

我正在处理传递给Visual Studio 2010的传统C++ COM项目。在此项目的IDL文件中,我必须从另一个C++项目引用ODL文件。我的问题是,其他项目生成它的头文件为$(文件名)_h.h。当我的IDL文件生成它的头文件时,它生成ODL文件名为$ filename.h,并且它不能引用正确的文件。更改IDL生成的头文件

换句话说,在我的IDL文件( “MyIDLFile.idl”),我有一个像

进口 “MyODLFile.odl” 声明

这在生成的文件( “MyIDLFile.h”)成为

包括 “MyODLFile.h”

,当我需要它来生成

包括 “MyODLFile_h.h”

如何指定文件名我想让IDL在导入语句中生成?

回答

2

我不确定您对导入语句的含义,但您要查找的内容可能在项目的属性下找到。转到属性窗口(Alt-F7),在“Configuration Properties/MIDL/Output”下,你将有机会声明你希望创建的头文件。由于您的项目是遗留的,因此从头文件名(例如$(ProjectName).h而不是$(ProjectName)_h.h)中删除“_h”可能更容易。请参阅http://support.microsoft.com/kb/321274了解更多信息。

+2

这是OP所指的导入语句:http://msdn.microsoft.com/en-us/library/ windows/desktop/aa367047.aspx 当你使用它的时候,会发生什么呢,就是MIDL为依赖IDL生成的头文件将包含另一个头文件的头文件,它似乎使用和O相同的名称带有“.h”后缀的DL文件。 我不明白为什么当Visual Studio默认为MIDL生成的头文件名使用“%(Filename)_h.h”时会这样做。因此,使用默认值,您永远不能将该IDL/ODL文件导入到另一个文件中。 – Steiny 2014-07-16 01:29:11

0

这似乎是一个常见的问题,我一直没能找到什么好的解决办法,但一个解决办法是一个“_i”添加到您的IDL文件,如EquipmentConstants_i.idl

微软确实参考/ header compile switch,但是我一直无法使它工作(midl /header switch)。