2013-06-26 56 views
2

我在使用VS2012和ICC 13.0構建的應用程序中鏈接到zlib 1.2.8。當我編譯一個文件,其中< zlib.h>包含在之前 < windows.h>,沒有問題。當包含< zlib.h> < windows.h>,我在< zconf.h>,行454編譯器試圖包括< unistd.h>時出錯。最糟糕的是,我在這個#include之前放了一個#pragma消息(),並且消息沒有出現在編譯輸出窗口中!在windows上使用zlib 1.2.8編譯時出錯

我試過着名的WIN32_LEAN_AND_MEAN但它沒有改變。

有人對此問題的解決方案有想法嗎?

謝謝!

+0

您已經有解決方案。之前放置zlib.h。 –

+0

嗨馬克!當然,這可以是一個解決方案,但#inc的不應該按這種方式排序,不是?在某個地方肯定會有衝突,我想知道它是什麼。如果我之前必須包含zlib.h,則必須更改**很多**代碼。 –

+0

啊,好的。當你說沒有問題時,我認爲你的意思是沒有問題。 –

回答

1

好的,這個bug已關閉。

問題來自另一個第三方庫,其中錯誤地定義了宏HAVE_UNISTD_H。該定義對該庫沒有影響,但禁止用zlib進行編譯。

我校是在zlib.h或其他庫的.h文件(S)添加

#undef HAVE_UNISTD_H 

+0

或者你可以把它放在include的源代碼中。最好不要修改提供的頭文件,因爲如果你得到一個新版本,你必須記得再次修改它們。 –