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 のすべての関数が extern "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 に答える