说明:该文档详细记录了如何在32位WIN7(64位WIN7同样适用)环境下使用VS2010编译VLC1.1.5源码,按照该文档进行实际编译时,各个文件的版本需与文档中描述的版本一致,否则可能出现错误。
文末及文中附有供参考的相关链接,在此一并对其作者表示感谢。
一、准备工作
1.1下载VS工程的vlc-1.1.5-2010源码
https://github.com/sunqueen?tab=repositories
点击vlc-1.1.5-2010链接,进入下载页面
点击红框中的Download ZIP,下载vlc-1.1.5-2010
解压下载的文件,得到vlcwin.15.vs2010.NT.up.zip,再解压一次,得到源码文件夹,如下图所示
1.2下载DirectX June2010 SDK,并安装
http://www.microsoft.com/en-us/download/details.aspx?id=6812
点击红框中的链接,下载DirectX June2010 SDK;
双击安装,其中用户反馈可以选择NO,其余默认。
开发包会自动安装在C:\Program Files\Microsoft DirectXSDK (June 2010)
(注:如果碰到安装失败,且Errorcode:S1023,请参考以下链接和内容)
http://blog.csdn.net/ts1030746080/article/details/8681550
错误原因:
计算机上有安装过更新版的Microsoft Visual C++ 2010Redistributable,打开“控制面板”的“程序和功能”,果然计算机里之前有安装“Microsoft Visual C++ 2010 x86 Redistributable - 1010.0.40219”,而DXSDK_Jun安装的是“Microsoft VisualC++ 2010 x86 Redistributable - 1010.0.30319”,版本低于本机已安装的版本,所以安装出现S1023错误。
解决办法:
卸载更高的版本“Microsoft Visual C++ 2010x86 Redistributable - 1010.0.40219”,再重新安装即可。卸载“Microsoft Visual C++ 2010x86 Redistributable - 1010.0.40219”影响不大。如果实在需要“Microsoft Visual C++ 2010x86 Redistributable - 1010.0.40219”,可在安装完DXSDK_Jun10之后再安装。下载页面地址(http://www.microsoft.com/en-us/download/details.aspx?id=26999 )
1.3下载Windows SDK7
http://www.microsoft.com/en-us/download/details.aspx?id=3138点击红框中的链接,下载SDK7
双击安装(注:可能下载的是在线安装包,也可以下载ISO格式文件,解压或虚拟光驱装载安装)
默认安装在C:\ProgramFiles\Microsoft SDKs\Windows\v7.1
1.4准备DirectShow的库文件编译BaseClasses项目
打开如下的工程,任由转换向导转换。
C:\ProgramFiles\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\下的
baseclasses.sln
项目BaseClasses转换会发生若干警告,无视。
分别在Debug/Release模式下编译,确认以下库文件生成:
C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug\strmbasd.lib
C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release\strmbase.lib
二、设置VS环境
2.1设置DirectX June2010 SDK
VS2010貌似不能按照如下方法:
设置Include:Tools(工具)->Options(选项)->Projects and Solutions(项目和解决方案)->VC++Directoties(VC++目录),在Include file(包含目录)中加入路径
设置Lib:Tools(工具)->Options(选项)->Projects and Solutions(项目和解决方案)->VC++Directoties(VC++目录),在Library files(库目录)中加入路径
打开刚刚下载解压好的vlcwin.sln解决方案,打开“属性管理器”页面,如图
在“包含目录”中添加如下路径,注意顺序,可能会影响编译,也可能某个路径不需要。
(为防止出错,可单击该行,点右边的下拉三角,选择“编辑”,逐条添加即可):
C:\Program Files\Microsoft DirectX SDK (June 2010)\Include;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\gl;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses;
C:\Program Files\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\common;
在“库目录”中添加如下路径
C:\ProgramFiles\Microsoft DirectX SDK (June 2010)\Lib\x86;
C:\ProgramFiles\Microsoft SDKs\Windows\v7.1\Lib;
C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug;
[Release编译需要将上一目录最后的Debug改为Release]
三、编译VLC(编译Debug版本)
3.1编译vlcwin, libvlc, libvlccore,libcompat
解决方案资源管理器中,默认的启动项应该是vlcwin,若不是,则右键将其设置为启动项,如下图
选择vlcwin,单击右键,选择Rebuild(重新生成),VS会先编译libcompat,再编译libccore和libclv, 最后编译vlcwin。
(右键ProjectDependencies(项目依赖项)中可以看到vlcwin依赖libclv和libccore,而libvlccore依赖于libcompat)
编译完成后在debug 目录下可以看到编译后的libvlc.dll, libvlccore.dll和vlcwin.exe等文件。
3.2编译libplugin
解决方案资源管理器中,选择libplugin,单击右键,选择“属性”,弹开如下图页面:
如图设置,将字符集改为”未设置”。
(注:默认的字符集是”Unicode”,我直接编译,出现Error:不能识别的xxxx等错误。将字符集改为”未设置”后,编译通过,原因暂不明)
选择libplugin,单击右键,选择“仅用于项目”->“仅生成libplugin”;
编译完成后再debug\plugins目录下可以看到编译后的libplugin.dll,比较大,约30M左右。
四、运行vlc
双击debug目录下的vlcwin.exe,主界面如下图:
帮助->关于,如下图
至此,Debug版本下vlc-1.1.5编译完成。
后记:如在编译过程中遇到本文未曾提到的问题,请自行百度或google解决。根据经验来看,大抵都是环境配置不对所引起的。如果顺利的话,恭喜!
参考链接:
http://blog.sina.com.cn/s/blog_b7770ea80101ge5j.html
https://forum.videolan.org/viewtopic.php?p=287019
https://forum.videolan.org/viewtopic.php?f=32&t=81793