【问题标题】:Why doesn't visual studio find soundio.h?为什么 Visual Studio 找不到 soundio.h?
【发布时间】: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


【解决方案1】:

如果您的代码已成功编译,您有两个选择:将 libsoundio.dll 复制到与您的 .exe 相同的文件夹中,或者将该 DLL 复制到 DLL 的典型 Windows 路径中,例如 @987654323 @。

如果您想将应用程序部署到另一台计算机上,第一种方法应该更容易。这就是为什么 Software for Windows 以安装程序的形式分发的原因,它在您的计算机中创建一个文件夹并复制多个文件,有时是 DLL,与.EXE 相同的路径

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 2011-07-13
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2011-06-24
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多