天天看點

使用VLC 制作ActiveX控件

在使用VLC自帶的 libvlc.dll 和 libvlccore.dll 來制作ActiveX控件時,遇到一些問題,由于VLC提供是非托管的dll,所在C#調用時,需要用如下語句進行引入:

(當然了,首先要把這兩個dll和plugins檔案夾,拷備到項目的Debug檔案夾下,

    程式做好之後,需要帶上libvlc.dll和libvlccore.dll,這兩個是vlc的播放核心,因為vlc把編解碼和格式解析的支援設計成了插件的形式,是以還必須要帶上vlc的plugins目錄裡的插件。plugins目錄檔案有點大(因為libvlc支援的格式和功能非常多,如果你不需要,删掉對應插件即可))

        // 建立一個libvlc執行個體,它是引用計數的

        [DllImport("libvlc", CallingConvention =CallingConvention.StdCall, ExactSpelling =true)]

        [SuppressUnmanagedCodeSecurity]

        private staticexternIntPtr libvlc_new(int argc,IntPtr argv);

但是在運作時,當調用該Dll中的方法時,就會報錯:

---------------------------

使用者控件測試容器

---------------------------

未能建立 UserControl“*******ActiveX.*******ActiveX”

錯誤資訊是“試圖加載格式不正确的程式。 (異常來自 HRESULT:0x8007000B)”

提示格式不正确,首先想到可能的原因是64位系統編譯的問題,将項目的目标平台改為了 x86,結果又報新的錯誤:

未能加載檔案或程式集“file://\**********ActiveX\obj\x86\Debug\*******ActiveX.dll”或它的某一個依賴項。試圖加載格式不正确的程式。

(在 obj\x86\Debug\ 檔案夾下放置dll和plugins還是不行)

奇怪的是,我們之前已經有一套用C#開發的,可以執行的Win Form形式的播放器用戶端,也是調用了VLC的這兩個dll,是可以正常執行的,但是換成ActiveX控件的方式之後,卻出現了這樣的問題(兩者代碼和運作環境都是一緻的)

換了一套XP(32位)下的VS2010環境重新編譯之後,報了下面的錯誤:

---------------------------

Microsoft Visual C++ Runtime Library

---------------------------

Assertion failed!

Program: ... 10.0\Common7\IDE\UserControlTestContainer.exe

File: ../.././src/control/media_player.c

Line: 360

Expression: instance

For information on how your program can cause an assertion

failure, see the Visual C++ documentation on asserts

(Press Retry to debug the application - JIT must be enabled)

---------------------------

終止(A)   重試(R)   忽略(I)   

---------------------------

還是不能正常調用!

================================================

百思不得其解,不過肯定是系統環境和dll不相容,嘗試降低了一個VLC版本(v 1.1.11),将v 1.1.11下的兩個dll,和plugins檔案夾,拷到了Debug檔案夾下(XP環境中),問題竟然解決了!!

由些想到,64位的 Win8 中,會不會也是這個原因,可惜的是,重新替換了dll和plugins檔案夾後,依然報錯!

錯誤資訊是“試圖加載格式不正确的程式。

好在終于有一套可以成功運作的環境了:

XP(32位) + VLC(v 1.1.11)

有遇到類似問題的朋友,可以讨論一下!

原始的開發環境如下:

作業系統環境:Win8 (64位)

開發環境: VS2010 C#

VLC版本:2.0.8 

VLC 1.1.11 的開發插件,已上傳至: http://download.csdn.net/detail/dzf203/5958655

友善大家下載下傳

繼續閱讀