0

我正在尝试让 libao 库在 Qt 中工作。这是我到目前为止所拥有的。

#include <ao/ao.h>

...

static int audio_driver;
static ao_device *audio_device;
static ao_sample_format audio_format;

...

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    ao_initialize();
    audio_driver = ao_default_driver_id();

    MainWindow w;
    w.show();

    return a.exec();
}

它表示对 ao 库中任何内容的每个引用都是未定义的引用。

error: undefined reference to `ao_initialize'
error: undefined reference to `ao_default_driver_id'

以此类推,一直到代码。

值得一提的是,ao/ao.h 中的每个函数都位于外部“C”中。

知道是什么原因造成的吗?

非常感谢。

4

2 回答 2

2

您没有链接到 ao 动态库。

如果您使用 qmake 在.pro文件中添加以下行

LIBS += -lao

如果库在非标准位置,也添加这些行

INCLUDEPATH += path/to/headers
LIBPATH += path/to/library
于 2013-07-07T16:11:35.247 回答
0

如果你在 Linux 上,或者任何其他可以使用 pkg-config 的地方,那么应该通过将“link_pkgconfig”添加到 CONFIG 变量,然后将包名称添加到 PKGCONFIG 变量来完成。例如,如果您使用 libao 和 libvorbisfile:

CONFIG += link_pkgconfig
PKGCONFIG += ao vorbisfile

这将确保不仅使用正确的链接标志,而且还使用正确的 CFLAGS/CXXFLAGS,这也很重要。

于 2013-07-07T16:46:00.057 回答