我有一个非托管函数调用,当我尝试将路径传递给文件名时抛出此异常。
我读过这很可能是由 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);
我想我错过了会议电话,但这可能是什么?还是会导致此异常的其他原因?
编辑:根据一些评论,我做了一些探索,发现......好吧,什么都没有。该实例的结构是不透明的,这意味着我不知道用外行术语。我的猜测是这意味着您不需要在使用它的应用程序中重建它?
在基于此long
的盲目猜测中,我用负责将 *p_instance 值设置为 a而不是a 的函数替换了我一直使用的返回值,IntPtr
因为当它IntPtr
返回 0 时,我看到了 long一个值。再说一次,IntPtr
我真的不知道是什么。我很高兴在实例变量中看到不是 0 的东西,但是当我运行它时,它又出错了。
编辑:我已将问题扩展到此处。