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++标准委员会库工作组成员发起,其中有些内容有 ...
随机推荐
- Codeforces 9D How many trees? 【计数类DP】
Codeforces 9D How many trees? LINK 题目大意就是给你一个n和一个h 问你有多少个n个节点高度不小于h的二叉树 n和h的范围都很小 感觉有无限可能 考虑一下一个很显然的 ...
- Excel VBA to Interact with Other Applications
转载自:https://analysistabs.com/excel-vba/interact-with-other-applications/ Interact with PowerPoint fr ...
- 从数据库导出数据到excel之POI操作
项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...
- ballerina 学习四 如何进行项目结构规划
备注: * ballerina 程序员可以将代码放到一个文件或者一个项目目录 * 一个ballerina program是一个已经编译以及链接的二进制文件 * package是一个包含ba ...
- 织梦DedeCMS模板通用安装方法
在网络上有很多可以免费下载的DEDECMS模板,下载之后如何安装是很多新手的共同问题.下面将结合我个人使用DEDECMS模板的一些心得,讲一下DEDE模板安装的通用方法. 1.下载一个模板之后要判断一 ...
- 1G1核1M选择 Centos 32位 还是 Centos 64位?
前几天有个疑惑,现有一台云主机是 1G1核1M使用 Centos 64位会不有点浪费. 还专门发信息询问老大 Karson,老大说现 FastAdmin 都是三个1,也是 64 位的. 看 FastA ...
- [LeetCode系列]有序链表转换为平衡BST的递归解法
给定有序链表(元素由小到大), 试问如何将其转换为一个平衡BST? 平衡BST: 任意节点的左右子树的深度差值不大于1. 主要思想是用递归. Trick是使用快慢指针来获取中间节点. 获得中间节点后, ...
- mac版sublime 无法下载插件(Vue 代码无高亮问题)
1.官方下载sublime(http://www.sublimetext.com/3) 然后需要两步(1)上传插件主包Package Control(2)更改channels的配置信息(原来是国外的需 ...
- node编译安装
node应用编译安装 安装node编译环境 # apt-get install gcc make build-essential openssl g++ zlib1g-dev libssl-doc a ...
- SharePoint2013集成Exchange之任务同步
SharePoint可以将任务列表到outlook中,但在sharepoint 2013 上这个功能似乎不是很好用,如下图所示,点击任务列表的"同步到Outlook"按钮: 在弹出 ...