在visual studio2005中设置包含链接库lib文件(无法解析的外部符号 __imp__WSAStartup@8)
2009-04-16 21:18
651 查看
今天上午的错误终于搞明白了,原来我在建立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")
不过接下来又遇到了新的问题,我的工程中用到了一些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")
相关文章推荐
- 在VC++ 6.0 或 Visual Studio中设置包含链接库lib文件(无法解析的外部符号 __imp__WSAStartup 的解决方案)
- VS链接提示无法解析的外部符号 __imp__fopen解决办法
- windows编程链接时遇到error LNK2001 无法解析的外部符号_imp_timeGetTime@0
- APR lib 链接出现”error LNK2019: 无法解析的外部符号 __imp__apr_initialize“ 解决办法
- VS2013下glew库链接失败问题OpenGL.obj : error LINK2001: 无法解析的外部符号 __imp____glewFramebufferTexture2DEXT
- error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _enet_initialize 中被引用
- 关于error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8 __imp__gethostbyname@4 __imp__gethostbyname@4 __imp__
- C++中使用pthread.h头文件报错 - 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用
- C++中使用pthread.h头文件报错 - 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用
- 无法解析的外部符号__imp__AlphaBlend@44
- VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func
- 解决错误error LNK2019: 无法解析的外部符号 __imp__函数名,该符号在函数..
- error LNK2001: 无法解析的外部符号 __imp__RegEnumKeyExA@32
- error LNK2001: 无法解析的外部符号 __imp__DeleteDC@4
- openGL产生的 error LNK2001: 无法解析的外部符号 __imp_glBegin
- 如何解决VS2010 MySql Connect C 链接mysql:error LNK2019: 无法解析外部符号的问题
- 引用rtmp编译报错:rtmp.obj : error LNK2001: 无法解析的外部符号 __imp__timeGetTime@0
- 已解决error LNK2019: 无法解析的外部符号 __imp_IsTextUnicode以及__imp_MessageBoxA等
- 编译sdl项目时出现无法解析的外部符号 __imp__fprintf解决办法
- error LNK2001:无法解析的外部符号_imp_timeGetTime@0