1

最近、PortAudio 用の C++ バインディングがあることを発見したので、物事をうまくオブジェクト指向に保つために、通常の PortAudio C 関数から C++ バインディングに変換しています。ただし、コールバック関数で問題が発生しました。次の方法でストリームを作成しようとしています。

stream = new portaudio::MemFunCallbackStream<OutputChannel>(params, *this, &OutputChannel::output);

この呼び出しは、OutputChannel クラスのメソッドで行われます。この同じクラスには、コールバックとして機能するメソッドが含まれているため、「this」を MemFunCallbackStream メソッドに渡しています。ただし、ビルド時に、リンカーはエラーを出します:

Undefined symbols for architecture x86_64:
  "_Pa_OpenStream", referenced from:
      portaudio::MemFunCallbackStream<OutputChannel>::open(portaudio::StreamParameters const&)in outputchannel.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

他の (診断) メソッド機能するため、PortAudio ライブラリが読み込まれていることは確かです。このエラーの原因は何ですか?

4

1 に答える 1

0

ああ、私はばかだと思います。どういうわけか、以前はリンクされていたライブラリがアプリケーションにリンクされなくなりました。結局、エラーはライブラリが見つからないことが原因でした。問題が解決しました。

于 2013-01-10T10:12:40.790 に答える