WEB开发网
开发学院操作系统windows 2008 vlc的应用之八:MFC调用libvlc.dll 阅读

vlc的应用之八:MFC调用libvlc.dll

 2009-10-24 00:00:00 来源:WEB开发网   
核心提示: 在button的onclick关联函数中加入代码:voidCMFCVLCDlg::OnButton1(){//TODO:Addyourcontrolnotificationhandlercodeherecharpath[100];this->GetDlgItemText(IDC_EDIT1

在button的onclick关联函数中加入代码:

void CMFCVLCDlg::OnButton1()    
{
  // TODO: Add your control notification handler code here
    char path[100];
    this->GetDlgItemText(IDC_EDIT1, path, 100);
    libvlc_exception_t ex;
    libvlc_exception_init(&ex);
    int vlc_argc = 0;
    char *vlc_argv[100];
    vlc_argv[vlc_argc++] = "--ignore-config";
    libvlc_instance_t *p_instance = libvlc_new(
          vlc_argc, vlc_argv, &ex);
    libvlc_media_t *p_media = libvlc_media_new(
          p_instance, path, &ex);
    libvlc_media_player_t *p_media_player    
        = libvlc_media_player_new_from_media(
            p_media, &ex);
    libvlc_drawable_t hwnd =    
        (libvlc_drawable_t) this->GetDlgItem(IDC_DISPLAY)->GetSafeHwnd();
    libvlc_media_player_set_drawable(p_media_player, hwnd, &ex);
    libvlc_media_player_play(p_media_player, &ex);
}

6. 关联静态库及编译运行

打开Project Setting,在link标签的Object/library modules:下输入lib/libvlc.lib lib/libvlccore.lib。

build项目,应该没有错误。

Execute Program就可以执行了。

7. 一个BUG

第6步执行的是Execute模式,如果是Debug模式,点击“播放”后,后台会显示加载的vlc的plugins的dll的信息,但是加载完最后一个 dll的时候程序就Block住了。暂时不晓得为啥。经过更多的测试(win2003虚拟机里的vc6),发现Jeremiah的VC6可能真的有问题,debug的时候,打开Output窗口显示加载的dll的情况,就会block住。不打开Output窗口偶尔会set_drawable不成功,弹出新窗口。其他几位朋友测试则正常。

8. 用VC6以上版本调试结果

Jeremiah使用了vs2003及vs2005。

1)  会两个重复定义的错误,解决方法是将stdint.h中注释掉:

#ifndef __intptr_t_defined
#define __intptr_t_defined
//typedef long intptr_t;
#endif
//typedef unsigned long uintptr_t;

2) 发布Release版本会报内存错误。具体原因待查,应该是.lib不兼容的问题。不知道为啥Debug版就可以而Release版就不行。解决方法是用 dll2lib.exe(附件提供)将0.9.9a的libvlc.dll及libvlccore.dll转换为相应的lib库,替换工程的lib/下面的相应的库,然后再次Release即可。

Jeremiah对MFC只有一点点了解,所以上述的各个过程如果重复烦琐,及如何修复第7,8步讲的BUG及问题,请各位VC++达人指导 Jeremiah。先谢过。本文附件中提供了MFCVLC的源码,只是需要把vlc-0.9.9a的libvlc.dll, libvlccore.dll, plugins目录拷贝到Debug目录下就可以编译执行。需要的自己下载添加调试。

出处: http://jeremiah.blog.51cto.com/539865/184115

本文示例源代码或素材下载

上一页  1 2 3 

Tags:vlc 应用 MFC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接