2009-02-23 62 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 ++源代码,反之亦然。