外部C++関数をdylibからUnity C#にインポートします。問題の関数は次のようになります。外部関数のためのC#でのバッファとしてのポインタの使用
[DllImport ("librtcmix_embedded")]
unsafe private static extern int RTcmix_runAudio(void* k, void *outAudioBuffer, int nframes);
ポインタを取り込み、そのポインタに固定サイズのバッファにオーディオ情報を書き込みます。 OnAudioFilterReadの本体内に、私は、固定サイズのINT *(2048、数のポインタを宣言することができるであろう理想的
void OnAudioFilterRead(float[] data, int channels)
:私はバッファにこの情報を取ることになっているUnityからC#の機能を有していますサンプルのUnityのオーディオが使用する)を読み込み、それをRTcmix_runaudioのoutAudioBufferパラメータに入力し、そのポインタからの情報をデータのフロート配列にコピーします。
void OnAudioFilterRead(float[] data, int channels)
{
int *buffer = new int*(2048); //this line is not proper c#, how do I do this?
RTcmix_runAudio (null, buffer, 2048);
for(int i = 0; i<2048; i++){
data[i] = (float) buffer[i];
}
}
しかし、C#で2048のサイズの正しく動作するポインタを取得する方法は実際にはありません。これに関する助け?配列を入力したり、固定構造体を使用しようとする私の試みはすべて、プログラムをクラッシュさせました。