1

LibVLC DLL ライブラリ用の必要最小限の超シンプルな軽量ラッパーを作成しようとしています。メディアファイルを再生して一時停止および停止する機能だけで、多くのアクセスは必要ありません。ドキュメントと、LibVLCの古いバージョンを説明している他のリンクを見つけましたが、最新バージョンでは古くなっています。私もLibVLC.Netを試しましたが、それも時代遅れであり、ソースコードで探しているものを見つけて、エクスポートしようとしている関数に一致させることができません。

エクスポートしようとしている次の署名があります。

libvlc_new (int argc, const char *const *argv)

説明:

argc    the number of arguments (should be 0)
argv    list of arguments (should be NULL)

そして、これが私が試している方法です。

[DllImport("libvlc", EntryPoint = "libvlc_new")]
public static extern IntPtr New(Int32 argc, String[] argv);

説明は、それが配列であるべきであることを示唆しており、問題は2番目の引数だと思います。私はもう試した:

[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr)] String[] argv

hereによると、ここで提案されている String や StringBuilder などの他のオプションがいくつかありますが、関数を呼び出すたびに不均衡な PInvoke スタックが発生します。

この関数の適切な呼び出し規則と、おそらく他のいくつかの関数が何であるかを知る必要があります。「PInvoke For Dummies」オンライン リファレンスは非常に優れています。

4

1 に答える 1