最近、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 ライブラリが読み込まれていることは確かです。このエラーの原因は何ですか?