首页 > 解决方案 > 在树莓派零中编译 ALSA 项目的 pcm.c 示例时出现问题

问题描述

我正在使用带有最新树莓派操作系统的树莓派零 W

我已经安装了 libasound2 和 libasound2-dev,并且我从树莓派论坛上下载的用于测试 alsa 库的代码编译并正确运行:

#include <stdio.h>
#include <stdlib.h>
#include <alsa/asoundlib.h>
#include <alsa/pcm.h>

int main() {
  int val;

  printf("ALSA library version: %s\n", SND_LIB_VERSION_STR);

  printf("\nPCM stream types:\n");
  for (val = 0; val <= SND_PCM_STREAM_LAST; val++)
    printf("  %s\n",
      snd_pcm_stream_name((snd_pcm_stream_t)val));

  return 0;
}  

我正在尝试在此处编译 ALSA 项目网站中提供的正弦波生成示例代码:https ://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html

这在他们的示例页面中列为 pcm.c

我已将此代码保存在 main.cpp 中,并且我已更改#include "../include/asoundlib.h"(这会导致编译时找不到文件错误)为#include <alsa/asoundlib.h>

我使用gcc main.cpp -o main -lasound -fpermissive. 我收到一系列警告,但最后for (format = 0; format < SND_PCM_FORMAT_LAST; format++) {在它说有的行出现错误,no match for operator++并且operand type is 'snd_pcm_format_t' {aka '_snd_pcm_format'}). 但是根据他们的文档format已被声明为static snd_pcm_format_t format = SND_PCM_FORMAT_S16;并且snd_pcm_format_t是一个枚举。

我需要做什么才能编译这个基本示例?或者是否有一个更简单的示例展示如何使用 C++ 在 ALSA 中生成正弦音,或者有一些博客或教程解释了 ALSA 的这个示例代码是如何工作的?

标签: c++raspberry-pialsalibalsa

解决方案


推荐阅读