sys / _types.h中的cygwin编译错误

时间:2009-02-23 21:54:16

标签: c++ cygwin

我正在尝试使用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__ typedef long long _off64_t;

显然我在这里遗漏了一些东西,但我之前从未使用过cygwin这就是杀了我。

我希望能够至少在我的win32机器上编译我的CPP文件有几个原因。

(这只是数百个前两个错误)

感谢, 添

编辑:

我选择的简单解决方法作为答案 - 虽然我明白这不像使用gcc编译那样完整或可取... 这是一个快速而又脏的编译,因此在尝试与Linux机器集成之前,我可以使用我熟悉的工具。 (哦,跨平台开发的乐趣)

到目前为止,我已经对每个答案进行了投票,并感谢他们的帮助。

4 个答案:

答案 0 :(得分:5)

我可能错了,但是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版本。

答案 1 :(得分:4)

__extension__关键字是gcc扩展名,用于表示使用gcc扩展名的代码(在本例中为long long),因此它不会在迂腐模式下爆炸。如果可以,请尝试使用gcc编译代码。

答案 2 :(得分:2)

在C ++中,任何前面(或包含)双下划线的名称都是为特定实现保留的名称,在本例中为GNU C ++。 MS C ++将使用其他名称。底线 - 如果源使用这些名称,则无法使用MS C ++编译g ++源,反之亦然。

答案 3 :(得分:1)

我认为可能无法定义扩展宏。您可能希望在cygwin标头目录上进行文本搜索,看看是否是这种情况。如果是这样,请确保正确定义了标题搜索路径等。