[英]cygwin compile error in sys/_types.h
我正在嘗試使用cywin在win32機器上構建一些linux代碼。
我在ym編譯器中收到以下VS.net 2003錯誤:
“ c:\\ cygwin \\ usr \\ include \\ sys_types.h(15):錯誤C2144:語法錯誤:'__int64'應該前面加上';' ”
和
c:\\ cygwin \\ usr \\ include \\ sys_types.h(15):錯誤C2501:' extension ':缺少存儲類或類型說明符
代碼行是
__extension__ typedef long long _off64_t;
顯然我在這里丟失了一些東西,但是我以前從未使用過cygwin,這正在使我喪命。
由於某些原因,我希望至少能夠在win32機器上編譯CPP文件。
(這只是數百個錯誤的前兩個錯誤)
謝謝,蒂姆
編輯:
我選擇的簡單解決方法作為答案-盡管我確實理解這並不像使用gcc進行編譯那樣完整或令人滿意...這是一種快速而骯臟的編譯,因此在嘗試與之集成之前,我可以使用熟悉的工具linux機器。 (哦,跨平台開發的樂趣)
到目前為止,我已經對所有這些答案都投了贊成票,並感謝您的幫助)
我可能是錯的,但是cygwin標頭可以專門用於使用cygwin gcc而不是Visual Studio進行編譯。 嘗試在cygwin中使用gcc / g ++進行編譯。
編輯:我可能可以使用Visual Studio,此頁面(用於另一個項目)似乎意味着您可以使用vc ++ / cygwin進行編譯。 http://opensg.vrsource.org/trac/wiki/BuildVS2005Cygwin 。
您可能需要檢查一下。
EDIT2:另請參見: http : //www.coin-or.org/OS/documentation/node14.html
EDIT3:我想最好的粗略做法是確保Visual Studio首先搜索標准的Windows路徑。 因此,如果存在系統<sys/types.h>
,則它可能比cygwin版本更受青睞。
__extension__
關鍵字是一個gcc擴展名,表示使用gcc擴展名的代碼(在本例中為long long
),因此它不會在學究模式下崩潰。 如果可以,請嘗試使用gcc編譯代碼。
在C ++中,任何在雙下划線之前(或包含雙下划線的名稱)都是為特定實現保留的名稱,在本例中為GNU C ++。 MS C ++將使用其他名稱。 底線-如果源使用此類名稱,則不能用MS C ++編譯g ++源,反之亦然。
我認為擴展宏可能未定義。 您可能想在cygwin標頭目錄中進行文本搜索,以查看是否是這種情況。 如果是這樣,請確保正確定義了標題搜索路徑,等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.