1

PortAudio を使用してストリームを開きたい Visual C++ コード (FireBreath) があります。すべての初期操作を行った後、次のコードを作成しました。

err = Pa_OpenStream( &stream, &parametriIngresso, &parametriUscita, SAMPLE_RATE, FRAMES_PER_BUFFER, 0, My_Callback, &myData);
err = Pa_StartStream(stream);

while( ( err = Pa_IsStreamActive( stream ) ) == 1 )
    {
        Pa_Sleep(1000);
    }

err = Pa_CloseStream(stream);

この関数は JavaScript から呼び出され、特定の秒数が経過するとプラグインがクラッシュError calling method on NPObject!し、JavaScript で呼び出された行でエラーが発生します。

4

2 に答える 2

0

これはスレッドの問題です。スレッドプリンシパルはプラグインからより長い時間ビジーであり、Javascriptはシングルスレッドであるため、クラッシュします。解決策は、新しいスレッドを作成することです。

于 2011-11-25T15:05:25.890 に答える
0

NPObject のメソッド呼び出しエラー! 何か問題が発生すると、ほとんどの現在のブラウザーで発生するエラーです。以前は NPAPI プラグイン (firebreath プラグインなど) から例外テキストを送信できましたが、最近、すべてのブラウザーがこれを正しく渡さなくなりました。

とにかく、これの結果は、プラグインで何か問題が発生したことをエラー メッセージが確実に伝えているということです。プラグインが実際にクラッシュしている場合は、「NPObject のメソッドの呼び出し中にエラーが発生しました!」というエラー メッセージが表示されます。実際のクラッシュとは何の関係もありませんが、単に「クラッシュしたプラグインで何かを呼び出そうとした」ことを意味します。デバッガーを接続して、クラッシュの原因を突き止めれば、実際に何が起こっているのかを突き止めることができます。

于 2011-11-16T17:50:37.307 に答える