2009-02-23 95 views
0

我想用cywin在win32機器上構建一些linux代碼。sys/_types.h中的cygwin編譯錯誤

我得到以下VS.net 2003錯誤YM編譯:

「C:\ cygwin的的\ usr \包括\ sys_types.h(15):錯誤C2144:語法錯誤: '__int64' 前應先按';' 「

C:\ cygwin的\ USR \包括\ sys_types.h(15):錯誤C2501: '擴展':缺少存儲類或類型說明

的代碼線是

__extension__ typedef long long _off64_t; 

顯然我在這裏失去了一些東西,但我從來沒有使用過cygwin,這是殺了我。

我希望能夠至少編譯我的win32機器上的CPP文件,原因有幾個。

(這只是數百它看起來像前兩個錯誤)

感謝, 添

編輯:

簡單的解決辦法,我選擇的答案 - 儘管我明白這並不像使用gcc編譯那樣完整或不可取... 這是一個快速且髒的編譯,因此我可以在嘗試與linux機器集成之前使用我熟悉的工具。 (哦,跨平臺開發的樂趣)

我到目前爲止投了各自的答案,並感謝幫助)

回答

1

我認爲擴展宏可能不會被定義。您可能希望在您的cygwin頭文件目錄中進行文本搜索,以查看是否屬於這種情況。如果是這樣,請確保你頭搜索路徑是正確定義等

+0

如果我#定義,那麼它會變得更好!謝謝 – Tim 2009-02-23 22:07:31

+0

另外,請注意,在這種情況下,下面的宏工程re:jpalcek下面。顯然,你必須小心你做這件事。 – 2009-02-23 22:58:48

5

我可能是錯的,但在cygwin頭可以專門爲使用cygwin的GCC,而不是視覺工作室編譯製成。嘗試在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版本更受歡迎。

4

__extension__關鍵字是一個gcc擴展名,用於表示使用gcc擴展的代碼(在本例中爲long long),所以它在迂迴模式下不會爆炸。如果可以,請嘗試使用gcc編譯代碼。

2

在C++中,任何包含雙下劃線的名稱都是爲特定實現保留的名稱,在本例中爲GNU C++。 MS C++將使用其他名稱。底線 - 如果源使用這些名稱,則無法使用MS C++編譯g ++源代碼,反之亦然。