天天看点

使用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

方便大家下载

继续阅读