【发布时间】:2022-01-18 19:12:04
【问题描述】:
与外部库链接时,如果静态库和动态库都存在于同一个文件夹中,Visual Studio 将链接哪个库?
以boost文件系统库为例,x64静态库文件为libboost_filesystem-vc142-mt-x64-1_77.lib,x64动态库文件为boost_filesystem-vc142 -mt-x64-1_77.dll 和 boost_filesystem-vc142-mt-x64-1_77.lib。所有这些文件都位于同一个文件夹中。链接时,Visual Studio 链接器如何知道使用哪一个?是否由标志运行时库(/MT 和 /MD)决定?
【问题讨论】:
-
它链接到您告诉它链接到的库,如果您使用的是 boost 自动链接,那么它将链接到 boost 告诉它链接到的任何库
-
应注意链接使用
.lib文件,而不是.dll... dll 在运行时进入。 -
@AlanBirtles 对于没有 boost 库,Visual Studio 如何知道要使用哪一个?例如,我使用了一个名为 WebView2 的库。静态库文件名为:WebView2LoaderStatic.lib,动态库文件为:WebView2Loader.dll 和 WebView2Loader.dll.lib。它们都在同一个文件夹中。在这种情况下,链接器如何知道在链接时使用哪个库?
-
它会使用你告诉它的任何一个,库有不同的名称
-
您不知道自己需要的更准确的术语是
boost_filesystem-vc142-mt-x64-1_77.lib是一个导入库,它是一种特殊类型的静态库。它与动态库相关联,但不是动态库。
标签: c++ visual-studio compilation linker