2010-12-13 47 views
7

我一直在試圖用winw編譯一個帶有minw32的程序。每次我嘗試編譯這個時,都會收到關於sal.h缺失的錯誤。我已經下載了Visual Studio C++ 2010(Express),並且已經獲得了Microsoft Win7 SDK。即便如此,我仍然沒有找到該頭文件。有什麼地方可以下載嗎?我如何得到sal.h

回答

9

它位於

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include" (VS 2008) 

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include" (VS 2010) 

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include" (VS 2012) 
當然

,你可能要適應當地的安裝路徑。

+0

當試圖使用MinGW進行編譯時,VS安裝路徑中的include會有什麼幫助? – Elmi 2013-04-21 15:38:29

+0

@elmi - 由於SAL註釋(http://msdn.microsoft.com/en-us/library/ms235402.aspx)是Microsoft Visual C++的一部分,它隨Microsoft Visual Studio一起提供,不屬於Windows SDK或任何其他Microsoft - 提供的SDK,無論你喜歡與否。 – 2013-04-21 17:02:17

+0

嗯,所以答案是,不可能用MingW(包括DirectX-thingies)編譯WinSDK中的某些東西! – Elmi 2013-04-23 12:45:51

1

正如前面的答案所說,SAL是一個Visual Studio的東西。恕我直言,這是一個偉大的技術,它可以幫助編譯器理解代碼,以便在出錯時發出警告。不幸的是,微軟seems to own a patent on it so other compilers can't implement it☹。即使你從你的VS安裝中獲得sal.h的副本,我真誠地懷疑它會與mingw一起工作,因爲它會將宏轉換成gcc/mingw不理解的屬性。

我把一個名爲Salieri的小項目放在一起,它基本上是SAL頭的可移植版本,它只是定義了SAL宏。您不會獲得SAL註釋代碼的任何好處,但它可以幫助您獲得使用SAL在其他編譯器上編譯的代碼。

對不起,我在這裏宣傳自己的項目,但我認爲這可能會有很多人在這篇文章中遇到很大的幫助。