5

私は3日間解決できないという問題に直面しました、そしてあなたは私の最後の希望です。

私の目標は、Bass.dllを使用してサウンドを録音することです(iPhone用のライブラリの特別なバージョンとそのための.netラッパーのバージョンがあります。ここで見つけることができます:un4seen.com)

シミュレータープログラムで動作します(または正しく動作するようです)。しかし、iPhoneで実行しようとすると、次のエラーが発生しました。

--aot-onlyで実行中に、JITコンパイルメソッド'(ラッパーネイティブからマネージド)RecordingAudioHelloWorld.Player:recordingHandler(int、intptr、int、intptr)'を試行しています。

ここでエラーが発生します:

RECORDPROC _recordingHandler = new RECORDPROC(recordingHandler);

_record = Bass.BASS_RecordStart(16000, 1, BASSFlag.BASS_SPEAKER_RIGHT, _recordingHandler, IntPtr.Zero); // <-- ERROR!!!

private int recordingHandler (int handle, IntPtr buffer, int length, IntPtr user)
{
//....
}

ここで読んだように、SOで、リンカーの動作を「Link SDKアセンブリのみ」に変更しましたが、効果がありません。

それで何かできることはありますか?

4

1 に答える 1

8

MonoPInvokeCallback属性をrecordingHandler関数に追加してみてください。関数を静的にする必要もあることに注意してください。 YourDelegateTypeこのメソッドのシグネチャに対応する、C#で定義したデリゲートタイプである必要があります。

[MonoPInvokeCallback (typeof(YourDelegateType)]
private static int recordingHandler (int handle, IntPtr buffer, int length, IntPtr user)
{
// ...
}
于 2012-09-10T06:07:07.013 に答える