例如:
NetClient.obj : error LNK2001: unresolved external symbol __imp__WSACleanup@0
NetClient.obj : error LNK2001: unresolved external symbol __imp__send@16
NetClient.obj : error LNK2001: unresolved external symbol __imp__recv@16
NetClient.obj : error LNK2001: unresolved external symbol __imp__connect@12
NetClient.obj : error LNK2001: unresolved external symbol __imp__htons@4
NetClient.obj : error LNK2001: unresolved external symbol __imp__closesocket@4
NetClient.obj : error LNK2001: unresolved external symbol __imp__gethostbyaddr@12
NetClient.obj : error LNK2001: unresolved external symbol __imp__gethostbyname@4
NetClient.obj : error LNK2001: unresolved external symbol __imp__inet_addr@4
NetClient.obj : error LNK2001: unresolved external symbol __imp__socket@12
NetClient.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
Debug/NetClient.exe : fatal error LNK1120: 11 unresolved externals
明显是找不到相应函数,问题是Link选项里没有加入相应的lib库。
如本例,应在Link里加入ws2_32.lib。否则编译器无从寻找相应函数。
显示指定编译器链接某特定库的办法是:
#pragma comment(lib,"ws2_32.lib")
其实ws2_32.lib是这个我要链接的库,如果你需要链接test.lib,方法是:
#pragma comment(lib,"test.lib")
特定库的找到办法是看LNK2001中找不到的函数名,通过msdn或者其他手段获取这个函数所在的库名,链接进去就OK了。