精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源是流媒体开源项目专家,如果想学锐英源流媒体开发培训,请关注锐英源,此培训有C#部分,适合初中级流媒体爱好者。
vlc编译是学习vlc的第一步,在Windows平台下编译肯定要用VS了,不过不用VS用其它平台也可以编译,我开始也是用cygwin和MinGW进行编译,结果吃到了苦头,遇到了层出不穷的错误,没成功,后来按VS的方式来做,马上有效果了,这里请大家明白这个经验教训!Windows平台这么大的市场,这么重要的事情,VLC的开发者不会忘记,所以一定要把思维扩展开,不要只想着开源就离不开Linux了。
该文档详细记录了如何在64位WINDOWS7环境下使用VS2008和VS2010编译VLC2.1.0源码,按照该文档进行实际编译时,各个文件的版本需与文档中描述的版本一致,否则可能出现错误。
一 准备工作
登录https://github.com/sunqueen?tab=repositories,点击红框中的链接,进入下载页面。
VS2008适用
点击红框中的ZIP, 下载vlc-2.1.0-2008
解压下载的文件
VS2010适用
登录http://www.microsoft.com/en-us/download/details.aspx?id=6812
, 点击红框中的链接,下载DirectX June2010 SDK
双击安装,其中用户反馈可以选择NO,其余默认,开发包会自动安装在C:\Program Files\Microsoft DirectX SDK (June 2010)
如果安装失败 提示S1023错误,请卸载高版本的vs distribute文件,就可以安装。具体可以百度此错误
登录http://www.microsoft.com/en-us/download/details.aspx?id=3138
, 点击红框中的链接,下载SDK7。
下载的是适用于VS2008的链接
双击安装,默认安装在C:\Program Files\Microsoft SDKs\Windows\v7.0
建议:此处可以选择网络安装和下载后安装,建议先下载上面文件的iso文件解压后直接安装。下载时根据自己处理器的类型选择相应的安装包
VS2010的.NET4下载链接
https://www.microsoft.com/en-us/download/details.aspx?id=8442
下载时可以通过web方式安装,但是速度比较慢,建议下载iso。
打开Tools->Options->Projects and Solutions->VC++Directoties,在Include file中加入路径,如图
打开Tools->Options->Projects and Solutions->VC++Directoties,在Library files中加入路径,如图
Vlc源代码解压后,根目录会有sln文件,用vs2010可以直接打开,打开后,项目配置里直接有include和lib的配置。如无意外,可以直接编译。
选择vlcwin,右键单击,选择rebuild,VS会先编译libclv和libccore,再编译vlcwin(右键Project Dependencies中可以看到vlcwin依赖libclv和libccore)
编译完成后再debug 目录下可以看到编译后的DLL和EXE
选择lib_plugin,右键单击,选择set as Startup Project, 然后rebuild。
如果出现LINK : fatal error LNK1181: cannot open input file 'strmbasd.lib',说明找不到strmbasd.lib ,请从网上下载该文件,然后拷贝到debug文件夹中。
重新选择lib_plugin,右键单击,选择rebuild,编译完成后再debug\plugins目录下可以看到编译后的DLL
选择libcompat,右键单击,选择set as Startup Project, 然后rebuild。编译完成后再debug目录下可以看到编译后的DLL
{
POINT pt;
pt.x = GET_X_LPARAM(msg.lParam);
pt.y = GET_Y_LPARAM(msg.lParam);
ClientToScreen(msg.hwnd,&pt);
ScreenToClient(vd->sys->hparent,&pt);
PostMessage(vd->sys->hparent,WM_LBUTTONDOWN,msg.wParam,MAKELPARAM(pt.x,pt.y));
另外增加
case WM_RBUTTONDBLCLK:
vout_display_SendEventMouseDoubleClick(vd);
{
POINT pt;
pt.x = GET_X_LPARAM(msg.lParam);
pt.y = GET_Y_LPARAM(msg.lParam);
ClientToScreen(msg.hwnd,&pt);
ScreenToClient(vd->sys->hparent,&pt);
PostMessage(vd->sys->hparent,WM_RBUTTONDBLCLK,msg.wParam,MAKELPARAM(pt.x,pt.y));
}
VS2010中包含以前的.h/.cpp文件于现在的工程中,出现IntelliSense: 无法打开 源 文件 "stdafx.h",搜寻到一些方法都不适用,比如:设置项目属性->配置属性->C/C++->预编译头->使用 (/Yu)/创建 (/Yc)/不使用预编译头三种方式都不行。虽然提示这样的错误,但是运行程序是成功的,初始化和编译运行好像使用不同的查找路径,在低版本的VS2005/VS2008开发而在高版本VS2010中打开时会遇到这样的问题。其解决办法是:
项目属性->配置属性->C/C++->常规->附加包含目录->$(ProjectDir)
编译过程中的问题:
一 error LNK2026: 模块对于 SAFESEH 映像是不安全的。
解决方法:
1.打开该项目的“属性页”对话框。
2.单击“链接器”文件夹。
3.单击“命令行”属性页。
4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。
二、在调试的时候vlcwin.cpp里死机 ,最后注释掉vlc_exception_filter
相关的东西才能执行
参考:VLC文档:http://www.videolan.org/developers/vlc/doc/doxygen/html/index.html