*.Obj:error LNK2019: 无法解析的外部符号 (解决方法)
2013-12-18 15:26
543 查看
在用C++进行套接字编程时遇到下面的错误:
1>------ 已启动生成: 项目: NetClient, 配置: Debug Win32 ------
1> NetClient.cpp
1>c:/my documents/visual studio 2010/projects/netserver/netclient/netclient.cpp(48): warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:/vs2010/vc/include/stdio.h(277) : 参见“gets”的声明
1>c:/my documents/visual studio 2010/projects/netserver/netclient/netclient.cpp(59): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for
details.
1> d:/vs2010/vc/include/stdio.h(371) : 参见“sprintf”的声明
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _closesocket@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _inet_ntoa@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _recvfrom@24,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _sendto@24,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _htons@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _inet_addr@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _socket@12,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _WSACleanup@0,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _WSAStartup@8,该符号在函数 _main 中被引用
1>C:/My Documents/Visual Studio 2010/Projects/NetServer/Debug/NetClient.exe : fatal error LNK1120: 9 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决方法如下:
在CPP文件include语句之后加上如下代码:
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"ws2_32.lib")
这样就可以解决了。
工程设置:
在项目-->属性-->c/C++-->常规-->附加包含目录中,添加所用到的第三方库。
在[b]项目-->属性-->链接器-->常规-->附加库目录中,添加所要用的*.lib文件的路径,如:../Lib/Debug。[/b]
[b][b]在项目-->属性-->链接器-->输入-->附加依赖项中,添加用到的具体*.lib,*.dll文件。
[/b][/b]
打开vs2008,工具-->选项--》项目和解决方案-->VC++目录包含文件和库文件中添加第三方库的相应文件目录。
1>------ 已启动生成: 项目: NetClient, 配置: Debug Win32 ------
1> NetClient.cpp
1>c:/my documents/visual studio 2010/projects/netserver/netclient/netclient.cpp(48): warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:/vs2010/vc/include/stdio.h(277) : 参见“gets”的声明
1>c:/my documents/visual studio 2010/projects/netserver/netclient/netclient.cpp(59): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for
details.
1> d:/vs2010/vc/include/stdio.h(371) : 参见“sprintf”的声明
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _closesocket@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _inet_ntoa@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _recvfrom@24,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _sendto@24,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _htons@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _inet_addr@4,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _socket@12,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _WSACleanup@0,该符号在函数 _main 中被引用
1>NetClient.obj : error LNK2019: 无法解析的外部符号 _WSAStartup@8,该符号在函数 _main 中被引用
1>C:/My Documents/Visual Studio 2010/Projects/NetServer/Debug/NetClient.exe : fatal error LNK1120: 9 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决方法如下:
在CPP文件include语句之后加上如下代码:
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"ws2_32.lib")
这样就可以解决了。
工程设置:
在项目-->属性-->c/C++-->常规-->附加包含目录中,添加所用到的第三方库。
在[b]项目-->属性-->链接器-->常规-->附加库目录中,添加所要用的*.lib文件的路径,如:../Lib/Debug。[/b]
[b][b]在项目-->属性-->链接器-->输入-->附加依赖项中,添加用到的具体*.lib,*.dll文件。
[/b][/b]
打开vs2008,工具-->选项--》项目和解决方案-->VC++目录包含文件和库文件中添加第三方库的相应文件目录。
相关文章推荐
- error LNK2019: 无法解析的外部符号(编程解决方法)
- error LNK2019: 无法解析的外部符号(编程解决方法)(改)
- 自己测试bolt程序时遇到error LNK2019: 无法解析的外部符号解决方法。
- 错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 解决方法
- error LNK2019: 无法解析的外部符号(编程解决方法)
- “error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用”解决方法。
- VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func解决方案
- MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
- MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart
- MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC
- MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)"
- “error LNK2019: 无法解析的外部符号”问题解决方案
- error LNK2019: 无法解析的外部符号 ___glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用 1>GEARS.obj : er
- MS 4000 VCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC
- LNK1120: "无法解析的外部命令" LNK2019: "无法解析的外部符号 "void __cdecl Opearate(void)"类似问题的解决方法
- MSVCRTD.lib(crtexew.obj):error LNK2019:无法解析的外部符号WinMain@16,该符号在函数___tmainCRTStartup中被引用
- 如何解决VS2010 MySql Connect C 链接mysql:error LNK2019: 无法解析外部符号的问题
- MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
- C++中使用类模板时出现:“error LNK2019: 无法解析的外部符号”的解决办法
- 【学习ARToolkit小记之五】 解决“error LNK2019: 无法解析的外部符号 ___glutCreateWindowWithExit@8”错误