#include <winsock.h>或 #include <winsock2.h>都会出现下面的大片错误:
[Linker error] undefined reference to `WSACleanup@0'
[Linker error] undefined reference to `WSAStartup@8'
...
我在Project ->Project Options ->parameter ->linker 输入框内输入:
ws2_32.lib
结果出现了下面的错误信息:
[Build Error] [socketObject.exe] Error 1
我查了Compile Log得到的关键log信息是:
g++.exe: ws2_32.lib: No such file or directory
原来是找不到 ws2_32.lib,我检查了一下C:\Dev-Cpp\lib\下的库文件,发现根本就
没有ws2_32.lib这个文件。
于是上网搜了一下,有网友说对于Dev-c++应该是libws2_32.a
天,
原来是这个文件。
我很高兴的将这个lib文件加到linker中,兴奋地去编译,结果仍然是:
g++.exe: libws2_32.a: No such file or directory
草,真是气人。
我接着点击 linker 区域下方的一个按钮:Add Library or Object
用这个方法将libws2_32.a添加到linker: C:/Dev-Cpp/lib/libws2_32.a
这次编译竟然顺利通过了。
我将这次的遇到的问题及其解决过程记录下来,希望对其他的朋友有帮助。
也在此谢谢其他朋友对我的指点。
在网上搜到的相关信息我也罗列到下面:
在工程里已经#include <winsock2.h>了结果还是报错,郁闷死了,我用的是Dev-C++,起先还以为是IDE的问题,结果换成VC6.0还是同样的错误。最后在网上终于找到问题的原因,很快搞定了。顺便做一下笔记,以防以后再出现这种问题。
VC6.0下的错误信息:
error LNK2001: unresolved external symbol __imp__socket@12
error LNK2001: unresolved external symbol __imp__WSAStartup@8
Dev-C++下的错误信息:
[Linker error] undefined reference to `WSAStartup@8'
[Linker error] undefined reference to `socket@12'
错误原因:因为没有联接socket库ws2_32.lib。
解决办法:对于VC6.0要在porject/settings的link页面中object/library modules中添ws2_32.lib就可以了;对于Dev-C++同样在工程/工程属性的参数页面中连接器那一栏中添加库,这时必须找到库文件的目录,对于Dev-C++的对应库文件是libws2_32.a,在软件安装下lib文件夹中可以找到相应的库文件。
总结:所有运用到WinSock2的程序在编译连接时都要用的该库
原文链接:https://www.cnblogs.com/vilyLei/articles/1812634.html
本人在DEV C +++ 测试过了,不能运行 报错如下:好像是缺少库文件,可能因为nge2是在VC下编译的,所以不行,晚上我用源代码重新编译试试看
PS:本人可能 *** 作有误,我的Dev c 环境配置步骤 如下:
1.打开工程属性将 nge2的include文件和lib文件加入
2.在参数选项-连接器中加入库 ./libnge2/lib/libnge2.a
main.o(.text+0x40):main.cpp: undefined reference to `BeginScene'
main.o(.text+0x78):main.cpp: undefined reference to `DrawLine'
main.o(.text+0x7d):main.cpp: undefined reference to `EndScene'
main.o(.text+0x92):main.cpp: undefined reference to `NGE_Init'
main.o(.text+0xae):main.cpp: undefined reference to `InitInput'
main.o(.text+0xbc):main.cpp: undefined reference to `ShowFps'
main.o(.text+0xc1):main.cpp: undefined reference to `InputProc'
main.o(.text+0xcd):main.cpp: undefined reference to `NGE_Quit'
D:/Program Files/DEV-CPP/Lib/libmingw32.a(main.o)(.text+0x106):main.c: undefined reference to `WinMain@16'
collect2: ld returned 1 exit status
make.exe: *** [工程1.exe] Error 1
执行结束
你用的是devc 这个ide集成的是mingw 因此连接静态库的方法和vc是不一样的选项里有个链接参数 可以加上 -lws2_32就可以了,或者 手动选择libws2_32.a也是可以的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)