0

ファイル名へのパスを渡そうとすると、この例外をスローするアンマネージ関数呼び出しがあります。

これはDLL自体が原因である可能性が高いと読みましたが、DLLが別のアプリケーションで使用されているため、そうではないと思います。そのため、関数を呼び出すメソッドに問題がある可能性があります。

仕様:

libvlc_media_new_path (libvlc_instance_t *p_instance, const char *path)

説明:

p_instance  the instance
path    local filesystem path

そして私の方法:

[DllImport("libvlc", EntryPoint = "libvlc_media_new_path")]
public static extern IntPtr NewMedia(IntPtr instance,
                            [MarshalAs(UnmanagedType.LPStr)] string path);

私はコンベンションコールを見逃していると思いますが、それは何でしょうか? それとも、この例外を引き起こしている何か他のものでしょうか?

編集:いくつかのコメントに基づいて、私はいくつかのことを調べて見つけました...まあ、何もありません。インスタンスの構造体は不透明です。つまり、素人の言葉ではわかりません。私の推測では、それを使用しているアプリケーションでそれを再構築する必要がないということですか?

thisに基づく盲目的な推測では、使用していた戻り値を、*p_instance 値をlongan ではなくa に設定する関数に置き換えました。価値。繰り返しますが、私は本当に知りません。インスタンス変数に 0 以外の値が表示されたのは非常に嬉しかったのですが、それを過ぎて実行すると、再びエラーが発生しました。IntPtrIntPtrIntPtr

編集:質問をここに拡張しました。

4

2 に答える 2