编译direct show 的filter项目

时间:2022-08-30 00:19:33

最近搞windows编程,想学习一下direct show。编译了一下sdk里面的一个sample filter,做个笔记,记录一下。

说来渐愧,vc也用了n久了,还没有自己动手建立一个正式的项目,都是在别人的项目里面增减东西,所以很多东西只能自己一步一步试探。

学习filter本身可能不复杂,但是建立环境就非常恶心了,这里我写一点自己搭环境的过程,让需要的人可以少走点弯路。另外,一般需要建立这种工程的人,都是老程序员了,呵呵我这种新手,自然是没有机会弄,所以没弄过,我觉得也情有可原。哈哈。

学习direct show,其实最基本的就是dxsdk sample里面baseclassed的学习。学好这个,才能进一步学习filter的编写。当前前提是你已经熟悉了多媒体编程的一些基本概念。

废话少说,编译这些东西,出了一些问题,写一下解决这些问题的过程。

编译环境vs2005

1.编译baseclasses

虽然sample里面已经提供好了工程项目,但是还是手痒想自己一步一步弄一下。

首先先建立一个项目。文件->新建->项目

编译direct show 的filter项目

选择如上图所示。

然后在此解决方案上,添加项目。右键项目,添加新建项目,

编译direct show 的filter项目

选择win32项目,

项目属性选择如下图

编译direct show 的filter项目

静态库,不要预编译头。不要mfc和atl.

然后把dxsdk/sample/c++/directshow/baseclasses目录下面的.h与.cpp拷贝到自己的项目目录中。

有一点要提醒一下。activex.ver与activex.rcv这两个,别忘记拷过来。而且要把这两个文件添加到头文件那里,不是资源也不是源文件。

这时,按下f5

好吧,出错了

amextra.cpp(10) : fatal error C1083: 无法打开包括文件:“streams.h”

找不到头文件,看看这东西在哪个目录下面,加进来。就在当前工作目录,所以

编译direct show 的filter项目

右键属性,c/c++里面选常规,附加包含目录加个点号就好了。

接着f5,编译一会,又出错了,这次是

wxdebug.cpp(663) : error C2373: “DbgAssert”: 重定义;不同的类型修饰符

wxutil.cpp(277) : error C2065: “COINIT_DISABLE_OLE1DDE”: 未声明的标识符

这是工程属性不对,google了半天,查出答案了。

第一个问题,

C/C++=>高级=》调用约定=》__stdcall (/Gz).

该死的编译器,加上这些不规范的扩展,shit.

第二个问题

编译direct show 的filter项目

在预编译器定义上,加上_WIN32_DCOM这个宏。

接着f5,发现编译通过了,o yes.呵呵。

2.编译完了baseclasses,下面编译一个filter

老规矩,在解决方案上右键,添加一个新项目。

这次的工程属性依旧是win32项目,不过改成了dll项目,下面复选为空项目。

这里选一个最简单的,\DXSDK\Samples\C++\DirectShow\Filters\Dump就是他了,一看就知道是最入门的,没有功能的。

把下面.h,.cpp,.def,.rc拷过来。这里要注意的是要把.rc文件,添加到源文件里面,而不是资源里面。

f5编译,又出错了。

dump.cpp(74) : fatal error C1083: 无法打开包括文件:“streams.h”

又是该死的头文件。

这次添加的路径改了,改成../base(我取的项目名叫base)

再编译,又错

dump.rc(13) : fatal error RC1015: cannot open include file 'activex.ver'.

这个错,我查了n久,最后在msdn上找到答案了。这次的目录要添加下图的地方,shit.

编译direct show 的filter项目

再编译,过了,不过出了一堆链接错误。

因为我们还没有加依赖嘛,肯定会链接错误的。

又是google大法,需要三个库,一个刚才自己编译出来的,另外两个就是platform sdk里面的了,不过这个sdk,vs2005安装时,就已经安装好了。不用管他

在库依赖里面,加上../debug/baseclasses.lib strmiids.lib winmm.lib

编译通过,o yes,我们可以看到自己的dll了。

这个dll如何在播放器里面一步一步用起来,我还要研究与探索。呵呵

剩下的事情就是仔细研究源代码了。

编译direct show 的filter项目的更多相关文章

  1. 直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分

    直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分 本文是关于如何将GoogleTest和GoogleMock在没有预先编译安装在机器的情况下,直接在项目中作为项目的 ...

  2. Ant自己主动编译打包&公布 android项目

    Eclipse用起来尽管方便,可是编译打包android项目还是比較慢,尤其将应用打包公布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自己主动编译打包了 ...

  3. Ant编译和部署java web项目

    1.在myeclipse中创建javaWeb项目AntDemo 2.将build.xml放到AntDemo根目录下 3.修改build.xml中的Project name,工程目录名,工程名,还有to ...

  4. 【Egret】使用VSCode 编译,断点调试Egret项目

    经过我日积月累的摸索,还是一直模模糊糊的,搞不懂,今天经晨哥点拨两下,一下子就恍然大悟,搞定了怎么弄这个东西,现将经验分享如下. 一.效果目的 1.在VSCode里,直接F5打开Egret页面,并且可 ...

  5. Tomcat 运行 idea 编译好的 .class JavaWeb 项目

    对于新手来说,对于项目部署,有时候就是以为拷贝在idea控制台里面跑的项目放到tomcat里面的webapps里面跑就可以了,这仅仅限于静态项目..... 他不像PHP , 修改源码直接可以跑, 而J ...

  6. 使用NDK编译含JNI的Android项目常见问题解决方案

    有时候,自己下载的或者拷贝过来的JNI项目出现莫名错误,通常是找不到头文件,可能解决方案如下: Removing the C nature: The only way I could find to ...

  7. 用gradle编译任意结构的Android项目

    ## 需求 * 继续用`Eclipse`项目的结构,但是使用`gradle`编译,或者说任意的项目结构进行编译. ## 解决方案 1. Android studio的项目结构 1. Android S ...

  8. 【VS工程设置】 编译动态库,命令行添加参数,不使用预编译头,指定该项目链接 哪种 运行库

    编译动态库 注意: 动态库: [目标文件扩展] => .dll + [配置类型] => 动态库(.dll) 静态库: [目标文件扩展] => .lib + [ 配置类型]=> ...

  9. 反编译 war 包成传统项目的方法

    需求 项目老大让外包做了官网,不甚满意,想自己搞搞,遂叫我反编译他们发过来的 war 包. 方法 第一步:解压 war 包其实就是 zip 压缩包,用 zip 解压. 第二步:反编译 查看 war 包 ...

随机推荐

  1. EasyPR--开发详解(2)车牌定位

    这篇文章是一个系列中的第三篇.前两篇的地址贴下:介绍.详解1.我撰写这系列文章的目的是:1.普及车牌识别中相关的技术与知识点:2.帮助开发者了解EasyPR的实现细节:3.增进沟通. EasyPR的项 ...

  2. javascript函数小练习

    求n-m之间数据的和 <script> function num(n,m){ var sum=0; for (var i = n; i <= m; i++) { sum+=i; } ...

  3. JavaScript的作用域与作用域链

    作用域 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期.可以说,变量和函数在什么时候可以用,什么时候被摧毁,这都与作用域有关. JavaScript中,变量的作用域有全局 ...

  4. &lbrack;转&rsqb;(三)unity4&period;6Ugui中文教程文档-------概要-UGUI Basic Layout

    大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unityma ...

  5. 《ASP&period;NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式

    作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...

  6. 《JS权威指南学习总结--第二章词法结构》

    第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的 ...

  7. Oracle 服务器运行健康状况监控利器 Spotlight on Oracle 的安装与使用

    1.使用教程;https://blog.csdn.net/defonds/article/details/52936664 2.下载链接:https://pan.baidu.com/s/1cn7tE_ ...

  8. visual studio 2019密钥

    企业版:BF8Y8-GN2QH-T84XB-QVY3B-RC4DF 专业版:NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y

  9. CSS--使用Animate&period;css制作动画效果

    一 使用Animate.css动画 // 通过@import引入外部CSS资源; // 引入线上图片及JS文件; // 通过更改CSS类名生成不同类型的CSS3动画;   <!DOCTYPE h ...

  10. POJ 2247

    #include<iostream> #include<algorithm> #include<vector> #include<string> #in ...