2

speakHere の例から AQRecorder をコピーし、その他の必要なファイルをすべてコピーしました。その後、コンパイル エラーが発生したため、それを使用するチェーン内のクラスの名前を .mm に変更しましたが、これは現在解決されているようです。ただし、 AQRecorder クラスの使用方法はまだわかりません。その例には SpeakHereController という別のクラスがありますが、それも機能しませんでした。私の最近の試みのコードは次のとおりです。

#import "AQRecorder.h"

    AQRecorder recorder;
    [recorder startRecord];

エラー: レシーバーのタイプ「AQRecorder」が正しくありません

これがコンストラクターを呼び出さないといういくつかの理由で機能しないことはわかっています。また、これはポインターであるべきだと思います。私にはさまざまなバリエーションがあり、前述のように、SpeakHereController も使用してみました。

 SpeakHereController * recorder;
    recorder = [[SpeakHereController alloc]init];
        [recorder startRecord];

ただし、これによりエラーが発生します。

アーキテクチャ i386 の未定義シンボル: "AQPlayer::StopQueue()"、参照元: -[SpeakHereController stopPlayQueue] in SpeakHereController.o

「AQPlayer::PauseQueue()」、次から参照: -[SpeakHereController pausePlayQueue] in SpeakHereController.o

「AQPlayer::DisposeQueue(unsigned char)」、参照元: -[SpeakHereController stopRecord] in SpeakHereController.o

「AQPlayer::CreateQueueForFile(__CFString const*)」、次から参照: -[SpeakHereController stopRecord] in SpeakHereController.o

「AQPlayer::StartQueue(signed char)」、次から参照: -[SpeakHereController play:] SpeakHereController.o 内の

「AQPlayer::AQPlayer()」、次から参照: -[SpeakHereController awakeFromNib] in SpeakHereController.o

「AQPlayer::~AQPlayer()」、次から参照: -[SpeakHereController dealloc] in SpeakHereController.o

4

1 に答える 1

1

結局これを使いました

   SpeakHereController * recorder;
    recorder = [[SpeakHereController alloc]init];
    [recorder awakeFromNib];

ただし、必要なのはレコーダーだけであり、これを機能させるには、ファイルからすべての AQPlayer 参照をコメントアウトする必要がありました。なんらかの理由で、play メソッドで多数のリンカー エラーが発生しました。

awakeFromNib を呼び出す理由は、メソッドが init によく似ており、AQRecorder/AudioQueue のすべての設定を初期化するためです。

于 2012-07-05T17:00:00.630 に答える