2010-07-13 79 views
2

我有一個COM項目,其中包含一些IDL文件,其中一些導入到其他的。 Visual Studio如何決定首先編譯哪些代碼(使用MIDL)?Visual Studio如何確定編譯IDL文件的順序?

我想控制順序。我有一個主IDL文件,其中包含我的庫聲明與幾個導入,並且如果它不是編譯的第一個,我會得到一個構建錯誤。

(如果這聽起來真的很奇怪......我是COM/ATL的新手,它真的很混亂)。

+0

只要你有你的依賴設置正確Visual Studio應該按正確的順序編譯的東西。 – ChrisF 2010-07-13 20:04:16

+0

如何設置IDL文件之間的依賴關係?我使用的是import語句,就像在正常的C++中使用#include語句一樣。 – 2010-07-14 00:05:44

回答

4

您不能讓Visual Studio以特定順序構建.ild文件。相反,您可以將一些.idl文件轉換爲其他.idl文件,並將您導入的文件設置爲「從構建中排除」。這樣MIDL就不會單獨編譯導入的文件,而是將它們的內容包含到另一個文件的特定位置,並作爲該文件的一部分進行編譯(與C預處理器#include的效果相同)。

0

你可以讓Visual Studio中建立任何你想要的順序的東西,有2種方式來做到這一點:

  1. 在預生成步驟將在其中您可以得到它的建造者你希望先建立。

  2. 把你想要構建的那個放在一個單獨的項目中,並讓它通過讓另一個項目依賴它來構建該項目。

這是你應該做的,如果你不能修改idl文件。但是,如果一個idl文件確實依賴於另一個idl文件,並且可以修改它們,那麼請執行上面提出的建議並使其包含另一個文件。