使用winsock.h冲突Cygwin

问题描述 投票:0回答:1

我正在使用带有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

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

非常感谢你提前:-)

c++ gcc cygwin winsock conflict
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.