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

Visual studio 2015 MSVC链接动态库,静态库作为链接器输入,visual-studio-2015,cmake,Visual Studio 2015,Cmake,我有一个项目,它链接到OpenBLAS。在Visual Studio的项目属性中,我在附加依赖项中设置了openblas.lib的完整路径,但是MSVC仍然生成一个依赖于openblas.dll的二进制文件 该项目由CMake使用OpenBLAS::OpenBLAS生成,但我认为出于调试目的,最有趣的问题是,为什么MSVC不链接作为输入提供的文件中的对象。Windows上的*.lib可以是DLL的导入库,也可以是静态库 CMake中的库是使用静态或共享属性构建的。如果在Windows平台上默认情

我有一个项目,它链接到OpenBLAS。在Visual Studio的项目属性中,我在附加依赖项中设置了openblas.lib的完整路径,但是MSVC仍然生成一个依赖于openblas.dll的二进制文件


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

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

CMake中的库是使用静态或共享属性构建的。如果在Windows平台上默认情况下忽略了它,则会生成一个共享库。这可以通过在CMake命令行上定义-DBUILD\u SHARED\u LIBS=OFF来更改

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

TL;DR:要将OpenBLAS构建为静态库,您需要在运行configure步骤时在CMake命令行上传递-DBUILD\u SHARED\u LIBS=OFF