C++链接sfml音频时未定义的引用

C++ Undefined reference when linking sfml-audio

本文关键字:未定义 引用 音频 链接 sfml C++      更新时间:2023-10-16

我正试图让SFML音频在我的c++程序中工作。我使用的是来自mingw64的Windows10和g++5.2.0版本。奇怪的是,我只是无法链接sfml音频。我可以在这个页面上编译和运行程序,但它不使用音频。(这个页面是为linux用户准备的,但我只是想看看这个例子。)

然而,当我试图编译这个程序时,sfml_test.cpp:

#include <SFML/Audio.hpp>
int main()
{
    sf::SoundBuffer buffer;
    if (!buffer.loadFromFile("sound.wav"))
        return -1;
    return 0;
}

在终端中使用此命令:

g++ sfml_test.cpp -lsfml-audio -lsfml-system

我得到这个错误:

C:UserssudgyAppDataLocalTempccZW1WAC.o:sfml_test.cpp:(.text+0x54): undefined reference to `_imp___ZN2sf11SoundBuffer12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE'
collect2.exe: error: ld returned 1 exit status

怎么了?我认为这是我安装库时的问题,但上面的图形示例运行良好。如果你需要它,我从这个页面下载了它,使用窗口部分左下角的下载。

谢谢!

好消息。4.9.2 MinGW您为5.2.0 MinGW编译器下载了这些预编译的二进制文件。这就是你遇到问题的原因。我和字符串或字符有关。

解决方案。使用cmake到使用编译器5.2.0 MinGW从源代码进行构建。

坏消息。我不知道如何使用cmake,在寻找答案时偶然发现了这个问题。让我知道你做了什么。我也有同样的编译器。