私はいくつかの関数を使用するだけで終了しましたが、誰かが作業をしたくない場合に備えて、ここに私が書いたものがあります:
[DllImportAttribute("libspeexdsp.dll")]
public static extern IntPtr speex_echo_state_init(int frameSize,int filterLength);
[DllImportAttribute("libspeexdsp.dll")]
public static extern void speex_echo_state_destroy(IntPtr st);
[DllImportAttribute("libspeexdsp.dll")]
public static extern void speex_echo_cancellation(IntPtr st, IntPtr recorded, IntPtr played, IntPtr echoRemoved);
[DllImportAttribute("libspeexdsp.dll")]
public static extern void speex_echo_playback(IntPtr st, IntPtr played);
[DllImportAttribute("libspeexdsp.dll")]
public static extern void speex_echo_capture(IntPtr st, IntPtr recorded, IntPtr echoRemoved);
[DllImportAttribute("libspeexdsp.dll")]
public unsafe static extern int speex_echo_ctl(IntPtr st, int id, ref IntPtr val);
[DllImportAttribute("libspeexdsp.dll")]
public static extern IntPtr speex_preprocess_state_init(int frameSize, int sampleRate);
[DllImportAttribute("libspeexdsp.dll")]
public static extern int speex_preprocess_ctl(IntPtr st, int id, IntPtr val);
[DllImportAttribute("libspeexdsp.dll")]
public static extern int speex_preprocess_run(IntPtr st, IntPtr recorded);
[DllImportAttribute("libspeexdsp.dll")]
public static extern void speex_preprocess_state_destroy(IntPtr st);
delcare する構造があまりなく、ほとんどすべてが IntPtr または int であるという点で幸運だったと思います。とても簡単です。
バイナリを見つける限り、どこにもプリコンパイルされていませんでしたが、ソースにはいくつかのマイナーな変更だけでコンパイルされた VS ソリューション ファイルが含まれていました。とにかくVSを使用します。なんらかの理由で、GCC などの他のコンパイラや、ほとんどのオープン ソース プロジェクトで使用されていると思われる他のコンパイラが必要になると想定していました (どれもよく知りません)。繰り返しますが、幸いなことに、そうではありませんでした。