为什么某些头文件需要在Visual Studio中链接库?

T.T*_*.T. 2 c c++ visual-studio

我正在Visual Studio 2003 .NET中构建一个套接字程序

#include <winsock2.h>头文件但也注意到我必须链接WS2_32.lib以修复未解决的winsock函数错误.

在其他家庭作业项目中,我只添加了一个头文件并使用了它的功能 - 没有添加相应的库.

这是怎么回事?

某些标准头文件库是否已在Visual Studio或其他内容中预先链接?

谢谢!

Gre*_*ill 7

套接字函数实际上是在实现的ws2_32.dll.为了使链接器能够找到它们,您需要将ws2_32.lib 导入库添加到项目中.请注意,导入库不包含函数的实际代码,而只包含有关在何处查找实际函数(in ws2_32.dll)的信息.

你没有提到你所指的是哪个其他头文件,但是如果它<string.h>已经在MSVC运行时库中了; 如果是像<windows.h>然后被导入库提供了诸如这些功能kernel32.lib,user32.libgdi32.lib.这些库可能已包含在链接器设置中.

  • 在这方面,请记住,有两种带有`.lib`扩展名的库 - 导入库和静态库.静态库*do*包含函数的实际代码,并且没有关联的`.dll`. (2认同)

Dav*_*nan 6

默认情况下,Visual Studio包含最常用的Win32 .lib文件,例如kernel32.lib,user32.lib,advapi32.lib等.对于更多深奥的库,您需要自己添加.lib文件.