为什么我需要将lib文件链接到我的项目?

Per*_*etz 10 c c++ dll

我正在创建一个使用DLL的项目.要构建我的项目,我需要包含一个头文件和一个lib文件.为什么我需要包含相应的lib文件?不应该头文件声明所有需要的信息,然后在运行时加载任何所需的库/ DLL?

谢谢

Dav*_*nan 4

在许多其他语言中,您只需要相当于头文件的内容即可。但 Windows 上常见的 C 链接器始终使用导入库,C++ 链接器也效仿,现在更改可能为时已晚。

作为一项思想实验,人们可以想象这样的语法:

__declspec(dllimport, "kernel32") void __stdcall  Sleep(DWORD dwMilliseconds);
Run Code Online (Sandbox Code Playgroud)

有了这些信息,编译器/链接器工具链就可以完成剩下的工作。

作为进一步的示例,在 Delphi 中,可以使用隐式链接导入此函数,如下所示:

procedure Sleep(dwMilliseconds: DWORD); stdcall; external 'kernel32';
Run Code Online (Sandbox Code Playgroud)

这只是表明导入库对于链接到 DLL 来说并不是必需的。