使用winsock.h冲突Cygwin

时间:2013-10-18 17:08:13

标签: c++ gcc cygwin winsock conflict

我正在使用带有CygWin和winsock的NetBeans,并且函数之间存在冲突(很多我的耻辱,我不知道混合cygwin和winsock会产生冲突)

In file included from /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/winsock.h:36:0,from main.cpp:10:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/psdk_inc/_fd_types.h:100:2: warning:
#warning "fd_set and associated macros have been defined in sys/types.
          This can cause runtime problems with W32 sockets"
In file included from main.cpp:10:0:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/winsock.h:309:68:
error: declaration of C function ‘int gethostname(char*, int)’ conflicts with
/usr/include/sys/unistd.h:238:6: error: previous declaration ‘int gethostname(char*, size_t)’ here

与之冲突的文件是_fd_types.h和unistd.h

我一直在研究,但没有找到解决问题的方法。我已经看到不建议将CygWin与Winsock一起使用,但为时已晚。我试图投入项目 - >属性 - >其他选项着名的 -lws2_32 (如MinGW linker error: winsock中所述),但它仍然不起作用。我也尝试在我的源文件中添加项目 ws2_32.lib ,但它也没有用。 另外,在附加选项中使用-lws2_32时,不允许我选择放置它的位置(应该在文件源之后),因此编译行类似于:

g++ -lws2_32 -c -g -lws2_32 -MMD -MP -MF build/Debug/Cygwin_4.x-Windows/main.o.d \
-o build/Debug/Cygwin_4.x-Windows/main.o main.cpp

欢迎任何解决方案,我希望我的问题很明确,如果不是只是告诉我,我会尝试更准确。

非常感谢您提前: - )

1 个答案:

答案 0 :(得分:0)

我设法回答了!我做的是右击项目 - >属性 - >链接器 - >其他选项并在那里写-lws2_32。 之前我做的是项目 - >属性 - > c ++编译器 - >其他选项并在那里写-lws2_32。