
オーディオ再生にpulseaudioを使用するコードを書きたいです。公式文書には簡単なサンプルプログラムがあります。pacat-simple.c。
libpulse-dev
パッケージがインストールされていることを確認し、#include
プログラムのパルスヘッダdが実際に存在することを確認しました/usr/include/pulse
。その後、仕事がどのように進行するかを確認するために少し遊んでみたので、pacat-simple.c
ファイルを別のフォルダにコピーしました。/usr/share/doc/libpulse-dev/examples/
(このファイルは実際に上記のリンクとは少し異なりますが、とにかくそうです。)
このサンプルファイルの具体的なガイドラインが見つからないので、簡単だと思いました。
gcc pacat-simple.c
ただし、これによりリンカーに次のエラーメッセージが表示されます。
/usr/bin/ld: /tmp/cciylcLH.o: in function `main':
pacat-simple.c:(.text+0xf1): undefined reference to `pa_simple_new'
/usr/bin/ld: pacat-simple.c:(.text+0x113): undefined reference to `pa_strerror'
/usr/bin/ld: pacat-simple.c:(.text+0x15b): undefined reference to `pa_simple_read'
/usr/bin/ld: pacat-simple.c:(.text+0x16c): undefined reference to `pa_strerror'
/usr/bin/ld: pacat-simple.c:(.text+0x1f2): undefined reference to `pa_simple_free'
collect2: error: ld returned 1 exit status
いくつかの検索の最後に私は1つを見つけました。前のフォーラム投稿-lpulse-simple -lpulse
これらの.so
ファイルに接続するには、次のフラグを追加することをお勧めします。振り返ってみると、私がこのことをしなければならなかったことが理解できる。
だから私は走ろうとします。
gcc -lpulse-simple -lpulse pacat-simple.c
ただし、上記と同じエラーメッセージが表示されます(もちろん、一時ファイル名は異なります)。私が逃した他のものはありますか?
答え1
走る
gcc pacat-simple.c -lpulse-simple -lpulse
「成功」は、サウンドファイルのファイル名を渡すと、スピーカーで横説説を再生する実行可能ファイルを提供します。しかし、同じファイル名を実際のファイルに渡すと、通常pacat
(必ずしもそうではありません!)同様の結果が得られます。 (時々新しくコンパイルされた実行可能ファイルは停止し、より速く印刷されますが、pa_simple_write() failed: Invalid argument
今はこれが私のシステムに他の問題があることを示していると仮定します)。