嘿傢伙和女孩:)好吧,所以我跑這個項目 - > 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