2013-07-07 89 views
0

我試圖讓在lib中工作的libao庫。這是迄今爲止我所擁有的。Qt libao未定義的參考

#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」中。

任何想法是什麼造成這種情況?

非常感謝。

回答

2

您沒有鏈接到ao動態庫。

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

LIBS += -lao 

如果庫在非標準位置,添加這些行太

INCLUDEPATH += path/to/headers 
LIBPATH += path/to/library 
+0

非常感謝,真的有所幫助。我試圖做'libao'和'ao'。猜猜這就是爲什麼他們不工作。 :P – Jacob

+0

作爲一個方面說明,說我有libvorbis。 - 再度? – Jacob

+0

是的。 '-lvorbis'確定。 –

0

如果你是在Linux上,或其他任何地方在pkg-config可用的情況下,應該這樣做的方法是將「link_pkgconfig」添加到CONFIG變量中,然後將包名稱添加到PKGCONFIG變量中。例如,如果你使用的禮包和libvorbisfile:

CONFIG += link_pkgconfig 
PKGCONFIG += ao vorbisfile 

這將確保不僅是正確的鏈接標誌將被使用,但也是一個正確的CFLAGS/CXXFLAGS,這也很重要。

+0

輝煌。 vorbisfile pkgconfig解決了我的下一個問題。非常感謝! – Jacob