嘿家伙和女孩:)好吧,所以我跑这个项目 - > http://www.helyar.net/2009/libvlc-media-player-in-c-part-2/它工作完美(他使用.net 2.0)但是,当我尝试任何以上3.5它给 - > 无法加载DLL'libvlc':指定的模块找不到。 (异常来自HRESULT:0x8007007E)libvlc媒体播放器在C#
有没有任何解决方法有人做过这种排序呢? MANY thanks ppl:D:D:D:D
嘿家伙和女孩:)好吧,所以我跑这个项目 - > http://www.helyar.net/2009/libvlc-media-player-in-c-part-2/它工作完美(他使用.net 2.0)但是,当我尝试任何以上3.5它给 - > 无法加载DLL'libvlc':指定的模块找不到。 (异常来自HRESULT:0x8007007E)libvlc媒体播放器在C#
有没有任何解决方法有人做过这种排序呢? MANY thanks ppl:D:D:D:D
您必须将libvlc.dll
复制到您的bin/debug
文件夹中。它必须是您的VLC安装文件夹中的一个(C:\program files\videolan\vlc
)
在新的2.0.x VLC发行版中使用该示例时必须完成两件事。首先,你必须以某种方式将libvlc DLL添加到搜索路径中。我使用了SetDllDirectory的一个调用来完成这个技巧。您声明为:
static class LibVlc
{
. . .
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool SetDllDirectory(string lpPathName);
. . .
}
然后您可以调用此方法与VLC安装的根文件夹。在我的PC上,我称它为:
LibVlc.SetDllDirectory(@"C:\Program Files (x86)\VideoLAN\VLC");
很明显,对于正在分发的程序,此参数应该是可配置的。
接下来,VLC API显然已经发生了变化,因为没有任何方法需要再次传递一个异常对象。它看起来应该检查方法的返回值(例如,如果发生错误,libvlc_new()会返回NULL)。我没有尝试通过引用传递异常对象,像他一样,但没有它的调用都可以正常工作(并且我的接口现在完全匹配VLC API)。我还指定了在执行互操作时使用的调用约定,只是为了向运行时清楚我所期望的参数传递顺序等。例如,这里是我对libvlc_new和libvlc_release的定义:
[DllImport("libvlc", CallingConvention=CallingConvention.Cdecl)]
public static extern IntPtr libvlc_new(int argc,
[MarshalAs(UnmanagedType.LPArray,
ArraySubType = UnmanagedType.LPStr)] string[] argv);
[DllImport("libvlc", CallingConvention=CallingConvention.Cdecl)]
public static extern void libvlc_release(IntPtr instance);
我希望这有助于!
此链接将是对您有用,并以“libvlc”面临的问题所有其他
它说clrealy“指定的模块找不到。”所以你的问题是什么?添加DLL的程序目录。 – Tommix