概述:

感谢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)<转>的更多相关文章

  1. libLAS1.8.0 编译和配置(VS2013+Win7 64)(一)

    libLAS 是一个用来读写三维激光雷达数据(LiDAR) 的 C++ 库.在学习.科研和研发中都会广泛运用.怎样编译和配置自己所须要版本号的libLAS库确是一件麻烦耗时的事情. 笔者在Win7 6 ...

  2. 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 ...

  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/ ...

  4. 使用VS2015 编译 64位的boost库

    别人写的编译参考: 目标:使用VS2015 编译 64位的boost库. 一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验 ...

  5. win7 64位平台编译的程序在XP 32位平台无法运行的解决方法

    win7 64位平台编译的程序在XP 32位平台无法运行的解决方法 vs2010的开发环境,制作了一个DLL库.但DLL在XP 32位平台一直无法使用.解决方法如下: 右键项目,属性->配置属性 ...

  6. 【VS开发】【C/C++开发】vs2015编译boost 64位

    vs2015编译boost 64位 ---恢复内容开始--- step 1: 打开Developer Command Prompt for VS2015命令行窗口 step 2: 执行bootstra ...

  7. 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 ...

  8. win7 64位系统使用vs2010编译OSG3.2.1

    首先我想说的是,osg是有二进制安装包的:http://openscenegraph.alphapixel.com/osg/downloads/free-openscenegraph-binary-d ...

  9. VS2015编译boost1.62

    VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...

随机推荐

  1. HihoCoder - 1496:寻找最大值(高维前缀和||手动求子集)

    描述 给定N个数A1, A2, A3, ... AN,小Ho想从中找到两个数Ai和Aj(i ≠ j)使得乘积Ai × Aj × (Ai AND Aj)最大.其中AND是按位与操作. 小Ho当然知道怎么 ...

  2. linux发行版本centos7.4上安装jdk,tomcat,mariadb良心教程

    准备工作: 本地安装:rpm -ivh 程序名 因为jdk,tomcat,mysql的安装过程需要从网上下载部分支持包才可以继续,所以要求提前安装下载好依赖. yum install glibc.i6 ...

  3. BZOJ4518 Sdoi2016 征途 【斜率优化DP】 *

    BZOJ4518 Sdoi2016 征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m ...

  4. BZOJ3887 [Usaco2015 Jan] Grass Cownoisseur 【tarjan】【DP】*

    BZOJ3887 [Usaco2015 Jan] Grass Cownoisseur Description In an effort to better manage the grazing pat ...

  5. [BZOJ5329][SDOI2018]战略游戏

    bzoj luogu Description 省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏. 这款战略游戏的地图由n个城市以及m条连接这些城市的双向道路构成,并且从任 ...

  6. redis 连接池的一些问题

        问题:  Could not get a resource from the pool 将配置修改为如下: JedisPoolConfig config =newJedisPoolConfig ...

  7. uva 11237 - Halloween treats(抽屉原理)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/37612503 题目链接:uva 11237 ...

  8. 新版eclipse编写Android 时常常报的错误 -support-v7

    一..和以往一样新建完一个Android项目之后.会报android.support.v4.. . . 或者V7找不到的错误.   这是由于这两个包在还有一个附带的项目(android-support ...

  9. 高并发的epoll+线程池,线程池专注实现业务

    我们知道,服务器并发模型通常可分为单线程和多线程模型,这里的线程通常是指“I/O线程”,即负责I/O操作,协调分配任务的“管理线程”,而实际的请求和任务通常交由所谓“工作者线程”处理.通常多线程模型下 ...

  10. linux查找目录下的所有文件中是否含有某个字符串 (转)

    查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...