MSVC链接动态库,静态库作为链接器输入

时间:2019-02-18 10:08:08

标签: visual-studio-2015 cmake

我有一个与OpenBLAS链接的项目。在Visual Studio的项目属性中,我在“其他依赖项”中将完整路径设置为openblas.lib,但是MSVC仍然会生成依赖于openblas.dll的二进制文件。

该项目是由CMake使用OpenBLAS imported target OpenBLAS::OpenBLAS生成的,但是我认为出于调试目的,最有趣的问题是,为什么MSVC不链接作为输入提供的文件中的对象。

1 个答案:

答案 0 :(得分:1)

Windows上的* .lib可以是DLL的导入库,也可以是静态库。

CMake中的库是使用STATICSHARED属性构建的。如果在Windows平台上默认省略,则会构建共享库。可以通过CMake命令行上的-DBUILD_SHARED_LIBS=OFF定义来更改。

从OpenBLAS发布CMakeLists.txt时,默认情况下,您正在Windows平台上构建DLL。因此,您链接到的库是一个导入库。

TL; DR :要运行OpenBLAS作为静态库,您需要在运行配置步骤时在CMake命令行中传递-DBUILD_SHARED_LIBS=OFF

相关问题