【发布时间】:2023-03-12 07:13:01
【问题描述】:
我一直在使用 Visual Studio 19 和 cmake。最初的目标是将 spdlog 和 libsoundio 库链接到我的项目,为了实现它,创建了以下 CMakeFile 来编译我的项目。
cmake_minimum_required (VERSION 3.8)
set(APPNAME DrumHero)
project($APPNAME)
#C++ version
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(SOURCES src/drumhero.cpp)
set(HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/drumhero.h)
set(DEPENDENCIES_LIBS spdlogd libsoundio)
link_directories("C:/Program\ Files/libsoundio/lib" "C:/Program\ Files/spdlog/lib")
include_directories("C:/Program\ Files/libsoundio/include" "C:/Program\ Files/spdlog/include")
add_executable (${APPNAME} ${SOURCES} ${HEADERS})
target_link_libraries(${APPNAME}
PUBLIC ${DEPENDENCIES_LIBS})
set_target_properties(${APPNAME} PROPERTIES
PUBLIC_HEADER "${HEADERS}")
所有库都已安装并位于 Program Files 中。
我复制了example program from libsoundio,但是visual studio显示一些与libsoundio相关的错误,似乎visualstudio没有找到该库,如下图所示的错误:
最奇怪的是代码可以编译,但是在执行.exe时显示如下信息:
翻译: 由于找不到 libsoundio.dll,无法继续执行代码。重新安装程序以解决问题。
为什么找不到 libsoundio?
【问题讨论】:
-
"为什么找不到 libsoundio?" - 这是因为您的库既不能在可执行文件附近的目录中找到,也不能在
PATH环境变量的目录指针中找到。在 build 可执行文件时已找到该库的事实与在 runtime 时搜索该库无关。这是在 Windows 上编程时应注意的事实之一。 -
请注意,Stack Overflow 不鼓励将 images 用于错误消息或其他可能表示为 text 的日志。相反,这些信息应该以文本的形式发布。见How to Ask。
-
好的,我将用文本替换图像。现在,关于你的第一个评论@Tsyvarev,让我感到困惑的是,我指向了我的 CMakeFile 中库的位置,这还不足以让 Visual Studio 和 windows 找到它吗?
-
是的,在运行时找到这个库时,指定构建可执行文件的库的位置是不够的。只需谷歌搜索“windows find dll”或类似词。
标签: c++ visual-studio dll cmake