2011-01-28 87 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)。