Qt libao 未定义参考
Posted
技术标签:
【中文标题】Qt libao 未定义参考【英文标题】:Qt libao undefined reference 【发布时间】:2013-07-07 16:01:41 【问题描述】:我正在尝试让 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”中。
知道是什么原因造成的吗?
非常感谢。
【问题讨论】:
【参考方案1】:你没有链接到ao动态库。
如果您使用 qmake 在.pro
文件中添加以下行
LIBS += -lao
如果库在非标准位置,也添加这些行
INCLUDEPATH += path/to/headers
LIBPATH += path/to/library
【讨论】:
非常感谢 - 这真的很有帮助。我试着做'libao'和'ao'。猜猜这就是为什么他们没有工作。 :P 作为旁注,假设我有 libvorbis。 -lvorbis 又来了?【参考方案2】:如果你在 Linux 上,或者任何其他可以使用 pkg-config 的地方,那么应该通过将“link_pkgconfig”添加到 CONFIG 变量,然后将包名称添加到 PKGCONFIG 变量来完成。例如,如果您使用的是 libao 和 libvorbisfile:
CONFIG += link_pkgconfig
PKGCONFIG += ao vorbisfile
这将确保不仅使用正确的链接标志,而且还使用正确的 CFLAGS/CXXFLAGS,这也很重要。
【讨论】:
太棒了。 vorbisfile pkgconfig 回答了我的下一个问题。非常感谢!以上是关于Qt libao 未定义参考的主要内容,如果未能解决你的问题,请参考以下文章
为啥在将 liblas 链接到 Qt 后出现未定义的参考错误?