error LNK2001: unresolved external symbol __imp__

  这是一个很常见的链接错误,像下面链接错误是因为找不到win32下面网络通信的库,因为这个库不常用,所以VC默认是不加载的:

 

MyClient.obj : error LNK2001: unresolved external symbol __imp__WSACleanup@0
MyClient.obj : error LNK2001: unresolved external symbol __imp__send@16
MyClient.obj : error LNK2001: unresolved external symbol __imp__recv@16
MyClient.obj : error LNK2001: unresolved external symbol __imp__connect@12
MyClient.obj : error LNK2001: unresolved external symbol __imp__htons@4
MyClient.obj : error LNK2001: unresolved external symbol __imp__closesocket@4
MyClient.obj : error LNK2001: unresolved external symbol __imp__gethostbyaddr@12
MyClient.obj : error LNK2001: unresolved external symbol __imp__gethostbyname@4
MyClient.obj : error LNK2001: unresolved external symbol __imp__inet_addr@4
MyClient.obj : error LNK2001: unresolved external symbol __imp__socket@12
MyClient.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
Debug/MyClient.exe : fatal error LNK1120: 11 unresolved externals

 

有两种方法加入lib库。

第一种方法:

如本例,应在Link里加入ws2_32.lib。否则编译器无从寻找相应函数。

 

第二种方法:

显示指定编译器链接某特定库的办法是:

#pragma comment(lib,"ws2_32.lib")

其实ws2_32.lib是这个我要链接的库,如果你需要链接test.lib,方法是:

#pragma comment(lib,"test.lib")

特定库的找到办法是看LNK2001中找不到的函数名,通过msdn或者其他手段获取这个函数所在的库名,链接进去就OK了。

 

第二种方法的移植性会好一些,因为第一种方法的库链接信息是记录在工程文件里面的。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值