Visual studio 没有找到 spdlog.lib

Visual studio not finding spdlog.lib

我一直在尝试创建一个简单的项目来了解 Windows 上的构建过程。 最近下载并安装了spdlog库,安装文件夹位于

C:\Program Files (x86)\spdlog

具有以下目录:

我尝试 link spdlog.dll 对我的代码使用 cmake,但根据此 link,dll 文件未 linked,合适的程序是link 使用 .lib 文件。

嗯,根据最后的信息,我创建了以下 CMakeLists.txt。

cmake_minimum_required (VERSION 3.8)

set(APPNAME DrumHero)
project($APPNAME)

#C++ version
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED True)

set(SOURCES src/drumhero.cpp)
set(HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/drumhero.h)

set(DEPENDENCIES_LIBS spdlog)

link_directories("C:/Program Files (x86)/spdlog/lib")
include_directories("C:/Program Files (x86)/spdlog/include")

add_executable (${APPNAME} ${SOURCES} ${HEADERS})

target_link_libraries(${APPNAME} 
                          PUBLIC ${DEPENDENCIES_LIBS})

set_target_properties(${APPNAME} PROPERTIES
    PUBLIC_HEADER "${HEADERS}")

当我尝试构建它时 Visual studio returns 错误

LNK 1104: 无法打开文件 'spdlog.lib'.

我得出结论,我的主要错误与通知cmake文件在哪里有关'spdlog.lib',但我不知道具体错误在哪里。

我有 3 个问题:

更新 1

我已经尝试过对 spdlog 路径中​​的空格进行转义,但没有成功。

更新 2

一些评论提出我可能将 x64 与 x86 混合使用的可能性,因此我决定重新安装 spdlog,现在将体系结构更改为 x64。 第二次安装是在 Program Files 中,所以我相信这次我使用了合适的路径库:“C:/Program Files /spdlog/include”.

但问题依旧。

您的构建失败,因为您在包含空格的路径中安装了 spdlog。尝试转义空格:

link_directories("C:/Program\ Files\ (x86)/spdlog/lib")

就链接而言,在 Windows 上,dll 个文件是动态库,而 lib 个文件是静态库。

在 Windows 上有两种使用(链接)动态库的方法:隐式和显式。两者都有记录 here。如果您将 spdlog 构建为 DLL,您看到的 spdlog.lib 只是一个导入库,并且 OS 将在您的应用程序启动时加载 spdlog.dll(如果它可以找到 DLL) .

编辑:事实证明 spdlog 的调试版本创建了一个 spdlogd.lib(注意额外的 d)。问题的作者已经安装了库的调试版本。