簡體   English   中英

sys / _types.h中的cygwin編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM