我正在尝试使用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机器集成之前,我可以使用我熟悉的工具。 (哦,跨平台开发的乐趣)
到目前为止,我已经对每个答案进行了投票,并感谢他们的帮助。
答案 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标头目录上进行文本搜索,看看是否是这种情况。如果是这样,请确保正确定义了标题搜索路径等。