VS2015编译VLC2.2.1(under WIN7-64)<转>
概述:
感谢https://github.com/sunqueen/vlc-2.2.1.32-2013
这个工程,我的工作基本上都是基于它,我只是觉得他的工程设置不够清晰,重新做了一次。
区别在于我的工程集中在win32prj文件夹中,config.h,和源码。方便用文本比较工具找出区别,便于VLC下一次更新。
我没有提供大而全的工程,很多插件我不打算编译。sunqueen在处理汇编部分时将原工程代码用mingw编译成了第三方库,提供给VC调用,并且将原代码删除。这个方法很巧妙,另我耳目一新,但也造成源码的大幅度改动。维护难度加大,或许对需要这些插件的朋友很有用,但我用不着,所以我无需引入这些改动,尽可能最小的改动。
我的目的是一个安防行业播放器,live555->avcodec->swscale->directdraw.能截图,录像保存,能够处理mp4,TS流。如果后续需要再引入OpenGL,其他解码库。VLC的插件方式不仅精简了发布体积,也方便后续扩展。
工程结构概述:
工程分为compat、libvlccore、libvlc、plugins
compat为基础,提供平台无关的库,libvlccore、libvlc均依赖于它。libvlc同时依赖libvlccore
plugins依赖compat
所有的工程都包含一个共同的头文件:config.h,用VS2015编译VLC需要建立很多个项目,为了这些项目有一个统一的配置,大部分设置都写在config.h里面。比如一些define,就不需要每个工程都写了。坏处也是有的,改了其中一项,所有工程都要重新编译。
config.h是工程的关键文件。每一项都要仔细检查,虽然注释里说如果要define某项设置要将其define 1,但绝大多数只要define一下就行了,因为程序里判断是靠#if def。
vlc官方win32版都是推荐mingw编译的,因此有需要修改代码的地方,这里一一列出种类
1、汇编
libvlccore中有CPU相关的函数,获取CPU能力集保存到上下文中,为以后的函数调用提供依据,GNU的汇编和INTEL的格式不同,好在新版的VS提供了CPUID函数,但一些plugin里面有汇编代码,主要集中在色彩转换上,
为此我避开了这些代码,用swscale来实现色彩转换,因为其也是用汇编实现,通用性更好
2、mingw自带函数而vs没有,如gettimeofday,opendir,虽然compat项目本身就为了消除平台相关性,但这部分还得修改。为了让VS2015能用上这些函数,我从mingw-w64-crt文件夹里拷贝了源文件。
3、VS不支持变量描述的数组,如int array[t],如果t是变量将报错,sunqueen的修改很细心,也很优雅。
4、VS同一个工程中如果遇到两个同名源文件(文件夹不同),编译目录产生的ojb名也是相同的,后面产生的obj将会覆盖前面的。导致链接失败,这部分的修改主要靠逐个修改VS工程设置,指定obj名称,以避免被覆盖。
5、命令#warning xxxxx改为#pragma message("warning:xxxxx")
附上下载链接。第三方库都在里面。实在不能理解csdn的上传机制。
http://pan.baidu.com/s/1i58p8B7
----------------------------------------------------------------------------------------------
转帖地址:http://blog.csdn.net/wanruirui/article/details/48395975
==================================================================
在此也感谢一下vlc源码提供者git地址:https://github.com/sunqueen
VS2015编译VLC2.2.1(under WIN7-64)<转>的更多相关文章
- libLAS1.8.0 编译和配置(VS2013+Win7 64)(一)
libLAS 是一个用来读写三维激光雷达数据(LiDAR) 的 C++ 库.在学习.科研和研发中都会广泛运用.怎样编译和配置自己所须要版本号的libLAS库确是一件麻烦耗时的事情. 笔者在Win7 6 ...
- Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)
Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...
- 编译并使用boost库(win7+boost1.63+vs2015+32位or 64位),超详细,boost于vs2017下编译(64/32bit)
首先下载得到boost的最新版(目前最新版是1.63) 下载地址: http://www.boost.org 也可以从这里直接下载 http://download.csdn.net/detail/ ...
- 使用VS2015 编译 64位的boost库
别人写的编译参考: 目标:使用VS2015 编译 64位的boost库. 一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验 ...
- win7 64位平台编译的程序在XP 32位平台无法运行的解决方法
win7 64位平台编译的程序在XP 32位平台无法运行的解决方法 vs2010的开发环境,制作了一个DLL库.但DLL在XP 32位平台一直无法使用.解决方法如下: 右键项目,属性->配置属性 ...
- 【VS开发】【C/C++开发】vs2015编译boost 64位
vs2015编译boost 64位 ---恢复内容开始--- step 1: 打开Developer Command Prompt for VS2015命令行窗口 step 2: 执行bootstra ...
- Hadoop 3.2.1 win10 64位系统 vs2015 编译
Hadoop 3.2.1 win10 64位系统 vs2015 编译 1 环境配置 1.1 JDK下载安装 1.1.1 下载 JDK 1.8 (jdk1.8.0 ...
- win7 64位系统使用vs2010编译OSG3.2.1
首先我想说的是,osg是有二进制安装包的:http://openscenegraph.alphapixel.com/osg/downloads/free-openscenegraph-binary-d ...
- VS2015编译boost1.62
VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...
随机推荐
- Android:BroadcastReceiver
参考:<第一行代码:Android> 郭霖(著) Broadcast分类 注册方式: 动态广播 在代码中注册receiver 一定要手动在onDestroy()时调用unregiste ...
- 如何将常规的web 应用程序转化为云上多租户 SaaS 解决方案
如何将web 应用程序转化为多租户 SaaS 解决方案 https://www.ibm.com/developerworks/cn/cloud/library/cl-multitenantsaas/i ...
- 变色DNA(最短路思维题)
个人心得:太水了,还是对最短路不太深入了解,无法构建出最短路模板,然后就是读题能力, 这题的关键在于转换为最短路模板,因为DFS我在24组超时了. 假设把从i到j的代价看做是权值,那么就是对权值的确立 ...
- 《DSP using MATLAB》示例Example7.7
Type-4 Linear-Phase FIR filter 代码: h = [-4, 1, -1, -2, 5, 6, -6, -5, 2, 1, -1, 4]; M = length(h); n ...
- 【requirejs】JS模块化工具requirejs教程
初识requirejs 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元 ...
- Nchan 安装试用(openresty 同时支持)
备注: 使用nginx最新的源码包(nginx-1.13.6),以及源码安装 1. 下载源码包(nginx+ Nchan) https://nginx.org/download/ng ...
- mstsc遇到CredSSP加密Oracle修正
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\P ...
- struts2学习(4)struts2核心知识III
一.result配置: result - name 就是前面返回的值,success,error等. type: dispatcher. 默认是这个,底层是jsp的forward: redirect: ...
- 如何使用 J2EE 连接器架构实现企业应用
JCA (J2EE 连接器架构,javaConnector Architecture)是对J2EE标准集的重要补充.因为它注重的是将Java程序连接到非Java程序和软件包中间件的开发.连接器特指基于 ...
- Java-Runoob:Java Number & Math 类
ylbtech-Java-Runoob:Java Number & Math 类 1.返回顶部 1. Java Number & Math 类 一般地,当需要使用数字的时候,我们通常使 ...