C#の配列をポインタ配列にして,Cの関数にポインタを渡す.
C#側
unsafe public static void hogecs() { short[] wave_data = new short[44100]; for (int i = 0; i < 44100; i++) { wave_data[i] = (short)(30000 * Math.Sin(2 * Math.PI * 440 * i / 44100)); } fixed (short* ptr = &wave_data[0]) { dll.Class1.hoge(ptr); } }
C側
void Class1::hoge(short* wave) { short tmp[44100]; for(int i=0;i<44100;i++) { tmp[i]=wave[i]; } }