该符号在函数 _main 中被引用

该符号在函数 _main 中被引用

 

今天上午的错误终于搞明白了,原来我在建立win32 控制台工程的时候 选用了visual 2005的默认设置,这样就使得项目的附加选项中选择了【预编译头】选项,改选成【空项目】选项后上午的问题就解决了,但是这两者之间的区别偶还没有搞明 白,等明白了再和大家分享吧,呵呵。现在先解决问题要紧。

不过接下来又遇到了新的问题,我的工程中用到了一些winsock函数,例如:

WSAStartup
WSACleanup
gethostname
gethostbyname

等等,这些函数都在头文件winsock2.h头文件中被定义了,我在引用这些函数的时候已经加入了

#include "winsock2.h"

语句,竟然还是提示错误,错误信息如下:

正在编译资源清单...
正在链接...
testMain.obj : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _main 中被引用
GeneralFun.obj : error LNK2019: 无法解析的外部符号 __imp__ntohl@4,该符号在函数 "unsigned long __cdecl GetID(void)" (?GetID@@YAKXZ) 中被引用
GeneralFun.obj : error LNK2019: 无法解析的外部符号 __imp__gethostbyname@4,该符号在函数 "unsigned long __cdecl GetID(void)" (?GetID@@YAKXZ) 中被引用
GeneralFun.obj : error LNK2019: 无法解析的外部符号 __imp__gethostname@8,该符号在函数 "unsigned long __cdecl GetID(void)" (?GetID@@YAKXZ) 中被引用
D:/vs2005/testproblem/Debug/testproblem.exe : fatal error LNK1120: 4 个无法解析的外部命令

最初感觉匪夷所思,后来上网一问,原来需要一个动态链接库文件(lib)文件,文件名为ws2_32.lib。

为了把这个ws2_32.lib加载到项目当中,有两种方法。

第一种:

在菜单 project ->settings -> link   -> object/library modules 下面输入ws2_32.lib   然后确定即可

第二种:

在头文件中加入语句#pragma comment( lib, "ws2_32.lib" )   来显式加载。 即:

#include <winsock2.h>
#pragma comment(lib, "WS2_32")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值