我正在创建一个使用DLL的项目。要构建我的项目,我需要包含一个头文件和一个lib文件。为什么我需要包含相应的lib文件?头文件不是应该声明所有需要的信息,然后在运行时加载任何需要的库/dll吗?
谢谢
发布于 2011-08-05 21:30:33
在许多其他语言中,您所需要的就是头文件的等价物。但是Windows上常见的C链接器总是使用导入库,C++链接器也是如此,现在改变可能已经太晚了。
作为一个思维实验,我们可以想象这样的语法:
__declspec(dllimport, "kernel32") void __stdcall Sleep(DWORD dwMilliseconds);有了这些信息,编译器/链接器工具链就可以完成剩下的工作。
再举一个例子,在Delphi中,可以使用隐式链接导入此函数,如下所示:
procedure Sleep(dwMilliseconds: DWORD); stdcall; external 'kernel32';这表明导入库对于链接到DLL来说并不是必须的。
发布于 2011-08-05 21:30:26
这是一个所谓的“导入库”,它包含稍后(在加载时)要求操作系统加载DLL的最小连接。
发布于 2011-08-05 21:31:33
DLL是Windows (MS/Intel)的东西。(生成的) lib包含调用DLL所需的代码,它向应用程序的其余部分公开“普通”函数。
https://stackoverflow.com/questions/6957061
复制相似问题