我正在创建一个使用 DLL 的项目。要构建我的项目,我需要包含一个头文件和一个 lib 文件。为什么我需要包含相应的 lib 文件?头文件不应该声明所有需要的信息,然后在运行时加载任何需要的库/dll 吗?
谢谢
最佳答案
在许多其他语言中,头文件的等价物就是您所需要的。但是 Windows 上常见的 C 链接器一直使用导入库,C++ 链接器也紧随其后,现在可能已经来不及改变了。
作为一个思想实验,可以想象这样的语法:
__declspec(dllimport, "kernel32") void __stdcall Sleep(DWORD dwMilliseconds);
有了这些信息,编译器/链接器工具链就可以完成剩下的工作。
再举一个例子,在 Delphi 中,可以使用隐式链接导入此函数,如下所示:
procedure Sleep(dwMilliseconds: DWORD); stdcall; external 'kernel32';
这只是表明导入库在先验上并不是链接到 DLL 所必需的。
关于c++ - 为什么我需要将 lib 文件链接到我的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957061/