VS工程的VLC源码网址:https://https://www.sodocs.net/doc/bf5783094.html,/sunqueen?tab=repositories
VLC文档:
https://www.sodocs.net/doc/bf5783094.html,/developers/vlc/doc/doxygen/html/index.html
该文档详细记录了如何在32位WINDOWS7环境下使用VS2008编译VLC2.1.0源码,按照该文档进行实际编译时,各个文件的版本需与文档中描述的版本一致,否则可能出现错误
一准备工作
1.下载VS
2.1.0-2008
登录https://https://www.sodocs.net/doc/bf5783094.html,/sunqueen?tab=repositories,点击红框中的链接,进入下载页面
点击红框中的ZIP, 下载vlc-2.1.0-2008
解压下载的文件
2.下载DirectX June2010 SDK
登录https://www.sodocs.net/doc/bf5783094.html,/en-us/download/details.aspx?id=6812
,点击红框中的链接,下载DirectX June2010 SDK
双击安装,其中用户反馈可以选择NO,其余默认,开发包会自动安装在C:\Program Files\Microsoft DirectX SDK (June 2010)
3.下载WINSDK7
登录https://www.sodocs.net/doc/bf5783094.html,/en-us/download/details.aspx?id=3138
,点击红框中的链接,下载SDK7
错误记录:
1.VS2010中包含以前的.h/.cpp文件于现在的工程中,出现IntelliSense: 无法打开源文件 "stdafx.h",搜寻到一些方法都不适用,比如:设置项目属性->配置属性->C/C++->预编译头->使用 (/Yu)/创建 (/Yc)/不使用预编译头三种方式都不行。虽然提示这样的错误,但是运行程序是成功的,初始化和编译运行好像使用不同的查找路径,在低版本的VS2005/VS2008开发而在高版本
VS2010中打开时会遇到这样的问题。其解决办法:
项目属性->配置属性->C/C++->常规->附加包含目录->$(ProjectDir)
双击安装,默认安装在C:\Program Files\Microsoft SDKs\Windows\v7.0
二设置VS环境
1.设置DirectX June2010 SDK
打开Tools->Options->Projects and Solutions->VC++Directoties,在Include file中加入路径,如图
打开Tools->Options->Projects and Solutions->VC++Directoties,在Library files 中加入路径,如图
三编译VLC(编译debug版本)
1.编译VLCWIN,LIBVLC,LIBVLCCORE
选择vlcwin,右键单击,选择rebuild,VS会先编译libclv和libccore,再编译vlcwin(右键Project Dependencies中可以看到vlcwin依赖libclv和libccore)
编译完成后再debug 目录下可以看到编译后的DLL和EXE
2.编译Lib_plugin
选择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
3.编译libcompat
选择libcompat,右键单击,选择set as Startup Project, 然后rebuild。编译完成后再debug目录下可以看到编译后的DLL
四运行VLC
双击debug目录下的vlc.exe,通过帮助查看版本,如下图:
五增加鼠标消息
当VLC在播放的时候,无法响应鼠标消息,修改的方法如下:
1.打开modules\video_output\msw\event.hh
2.在EventThread函数的 WM_LBUTTONDOWN, WM_LBUTTONDBLCLK和
WM_RBUTTONDOWN的break前增加
{
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));
}
break;
VS2010中包含以前的.h/.cpp文件于现在的工程中,出现IntelliSense: 无法打开源文件 "stdafx.h",搜寻到一些方法都不适用,比如:设置项目属性->配置属性->C/C++->预编译头->使用 (/Yu)/创建 (/Yc)/不使用预编译头三种方式都不行。虽然提示这样的错误,但是运行程序是成功的,初始化和编译运行好像使用不同的查找路径,在低版本的VS2005/VS2008开发而在高版本VS2010中打开时会遇到这样的问题。其解决办法是:
项目属性->配置属性->C/C++->常规->附加包含目录->$(ProjectDir)