C - Windows函数的编译错误(套接字)

时间:2014-03-21 10:46:13

标签: c++ windows eclipse sockets compilation

我在windows7 64bit上使用eclipse kepler。

我试图使用Windows功能套接字。这是代码的一部分 if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET) 但我有编译错误 - 未定义引用`socket @ 12'。 (socket需要ws2_32.lib)。

我在互联网上读到我可能需要添加-l,所以我做了,真的错误消失了。但现在我还有其他问题 -

13:23:35 **** Incremental Build of configuration Debug for project sc ****
Info: Internal Builder is used for build
g++ -l Ws2_32.lib -o sc.exe server.o 
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lWs2_32.lib
collect2.exe: error: ld returned 1 exit status

当我添加-l时,这是一件好事吗? 我该如何解决它(我希望它能在64位和32位上工作)?

2 个答案:

答案 0 :(得分:0)

错误没有消失,由于先前的错误,链接器不再进入该阶段。

您正在尝试链接文件" sc.exe"和" server.o"与图书馆" -o"。
自" sc.exe"不存在,你得到一个错误。如果它已经存在,你就会得到一个错误的库" -o"不存在。

如果你已经阅读了你找到的所有信息,你会注意到你需要在" -l"之后给出你要链接的图书馆的名称,如同#34; - lfoo"或" -l foo"。

documentation for the -l option is here

答案 1 :(得分:0)

我需要加入: minGW C链接器:库 - Ws2_32

错误在于我添加了Ws2_32.lib而不是Ws2_32