【发布时间】:2020-08-20 16:20:34
【问题描述】:
我在用 C++ 安装 OpenAL 音频库时遇到了困难。我猜标题在正确的文件夹中,问题出在 lib 文件中,因为当我包含库(#include <AL/al.h> 和#include <AL/alc.h>)时,VS Code 没有显示任何错误,但是当我尝试编译我的代码时从终端我收到以下错误:
C:\Users\ALEXAN~1\AppData\Local\Temp\ccNZ4t3C.o:Proves.cpp:(.text+0x1c): undefined reference to `__imp_alcOpenDevice'
C:\Users\ALEXAN~1\AppData\Local\Temp\ccNZ4t3C.o:Proves.cpp:(.text+0x30): undefined reference to `__imp_alcCloseDevice'
collect2.exe: error: ld returned 1 exit status
我安装库的位置和方式:
我已经下载并解压了Windows binaries。然后我运行cpp -v 命令来查找C++ 包含目录,其中显示了3 个目录。我将AL 文件夹(包含标题)移动到C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include 目录和Win32 库文件(称为libOpenAL32.dll.a、OpenAL32.def 和OpenAL32.lib)到C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\lib 目录。我不确定是否必须将它们中的 3 个或仅称为 libOpenAL32.dll.a 的一个放在那里。
我知道在 stackoverflow 上有类似的帖子,我已经阅读了其中的一些,但这是我第一次在 C++ 中安装库,我很难理解它们。如果有人能就如何完成安装提供清晰的解释,我将不胜感激。
【问题讨论】:
-
链接和包含标题是两个不同的东西。使编译器找到正确的头文件路径与添加到链接器以链接到库的命令是分开的。
-
但是当我尝试从终端运行我的代码时此时你仍然没有运行你的应用程序,因为构建失败了。
-
把它放在\lib目录还不够吗?不,绝对不行。除非您告诉它使用库,否则链接器不会在您的项目文件夹中搜索库。
-
你必须修改你的
tasks.json像这个答案:https://stackoverflow.com/a/59600574/487892 -L 参数是库文件夹的路径。 -l 是库文件。 -
它以
.a结尾,但你可以省略扩展名
标签: c++ visual-studio-code installation header-files openal