C - windows函数(套接字)的编译错误
Posted
技术标签:
【中文标题】C - windows函数(套接字)的编译错误【英文标题】:C - compilation error for windows function(socket) 【发布时间】:2014-03-21 10:46:12 【问题描述】:我正在 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 位上工作)?
【问题讨论】:
【参考方案1】:错误并没有消失,链接器只是因为之前的错误而不再进入该阶段。
您正在尝试将文件“sc.exe”和“server.o”与库“-o”链接。 由于“sc.exe”不存在,您会收到错误消息。如果它已经存在,你会得到一个错误,即库“-o”不存在。
如果您阅读了您找到的全部信息,您会注意到您需要在“-l”之后给出要链接的库的名称,如“-lfoo”或“-l foo” .
documentation for the -l option is here。
【讨论】:
我按照你说的添加了,但是我得到了新的错误。 13:23:35 **** 项目 sc 的配置调试的增量构建 **** 信息:内部构建器用于构建 g++ -l Ws2_32.lib -o sc.exe server.o c:/mingw/bin/。 ./lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe:找不到-lWs2_32.lib collect2.exe:错误:ld返回1退出状态 @KobiGuetta 请阅读文档,包括用于 mingw 的文档。 我按照文档的说明进行了更改,但仍然无法正常工作。gcc -o client.exe client.o app.o -lWs2_32.lib c:/mingw/bin/../lib/gcc/ mingw32/4.8.1/../../../../mingw32/bin/ld.exe:找不到-lWs2_32.lib【参考方案2】:我需要添加: minGW C 链接器:库 - Ws2_32
错误是我添加了 Ws2_32.lib 而不是 Ws2_32
【讨论】:
以上是关于C - windows函数(套接字)的编译错误的主要内容,如果未能解决你的问题,请参考以下文章
Groovy 编译错误:无法识别的 Windows 套接字错误