You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Qt编译ALSA音频示例代码时出现"undefined reference to"错误求助

解决Qt编译ALSA代码时的"undefined reference to"错误

你遇到的这个undefined reference错误,本质是链接阶段的问题——编译器已经找到了ALSA的头文件(所以没有编译语法错误),但链接器找不到实现这些ALSA函数的库文件。ALSA的API实现都在libasound.so里,我们需要明确告诉Qt的构建系统去链接这个库。

下面分两种常见的Qt构建工具给出具体解决方案:

1. 若使用qmake(.pro项目)

打开你的项目根目录下的.pro文件,添加一行链接配置:

LIBS += -lasound

保存后,先执行qmake(Qt Creator里可以右键项目选择"qmake"选项),再重新构建项目,链接错误就应该消失了。

2. 若使用CMake(CMakeLists.txt项目)

找到CMakeLists.txt中的target_link_libraries语句,将asound库添加到依赖列表中,示例如下:

target_link_libraries(你的项目名称 PRIVATE asound)

完成后重新加载CMake配置,再执行构建操作即可。

额外优化提示:

你的代码里可以简化头文件引用:<alsa/asoundlib.h>已经包含了pcm相关的所有定义,不需要单独写#include </usr/include/alsa/pcm.h>,直接保留前者即可。

内容的提问来源于stack exchange,提问作者slole

火山引擎 最新活动