【发布时间】:2021-12-20 16:45:43
【问题描述】:
我尝试使用visual studio在windows上构建一个动态dll库,但是生成了两个文件,一个是dll文件,另一个是.lib文件;
我使用 dll 库的知识是把它提供给链接器,我不知道 .lib 文件的用途是什么,它与静态库具有相同的文件扩展名,它绝对不是静态库;
在所有情况下创建动态 dll 库时,Visual Studio 是否会生成 .lib 文件?
我需要在我的应用程序中使用 .lib 文件吗?
如何在我的应用程序中使用 .lib 文件?
【问题讨论】:
-
在
msvc中,在构建dll 期间创建的.lib文件是导入库而不是静态库。您链接到导入库并在运行时使用 dll。您不使用 dll 链接。 -
该库用于构建时的链接(静态链接)——它包含动态链接器稍后将使用的钩子。另一个在程序加载运行时使用(动态链接)。
-
我使用 dll 库的知识是将其提供给链接器 对于标准/非托管 c++(不使用 .net/cli)和 msvc,这是错误的。使用 msvc 时,您不会链接到本机 c++ 中的 dll。您链接到 dll 的导入库。
-
@JaMiT 第二个问题回答了我的问题。由于 jwezorek 也做出了很好的回答,我接受了他的回答