VS2008下安装与配置DirectShow SDK 9.0 及 DirectShow AMCap改装的问题
一、安装DirectShow。
我装的是DirectShow SDK 9.0b。安装程序名为DXSDK_Jun10.exe。
下载地址:https://pan.baidu.com/s/1kURma3t
下载地址:https://pan.baidu.com/s/1slfmSMD





二、准备需要的静态链接库。
需要的静态链接库有strmiids.lib、strmbasd.lib、strmbase.lib、quartz.lib、winmm.lib。
其中strmiids.lib、quartz.lib在D:\ DXSDK\Lib文件夹下就有。strmbasd.lib要自己编译。
进入D:\ DXSDK\Samples\C++\DirectShow\BaseClasses文件夹下,双击baseclasses.sln。


按F7开始编译。

修改一些编译错误:
、 error C2146: 语法错误 : 缺少";"(在标识符"PVOID64"的前面)。
修改:在"typedef void * POINTER_64 PVOID64;"前面加上"#define POINTER_64 __ptr64"。

、 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int。
修改:把"operator=(LONG);"改成"LONG operator=(LONG);"。

修改:把"static g_dwLastRefresh = 0;"改成"static DWORD g_dwLastRefresh = 0;"。

、error C2065: "Count": 未声明的标识符。
修改:在"for (UINT Count = 0;Count < Result;Count++) "语句前面加上"UINT Count = 0",再把"for (UINT Count = 0;Count < Result;Count++) "改为"for (Count = 0;Count < Result;Count++) "。

、 error C2065: "iDone": 未声明的标识符。
修改:在"for (long iDone = 0;iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);)"语句前面加上"long iDone = 0;",再把"for (long iDone = 0;iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);)"改为"for (iDone = 0;iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);)"。

个都勾起来。

单击"重新生成"。

这样strmbasd.lib就编译好了。
三、添加VS2008的头文件目录和静态库目录。
、头文件目录。
要添加的目录有:
D:\DXSDK\Include
D:\DXSDK\Samples\C++\DirectShow\BaseClasses
D:\DXSDK\Samples\C++\Common\Include。

、静态库目录。
要添加的目录有:
D:\DXSDK\Lib
D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug
D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug_Unicode
D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Release
D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Release_Unicode

DirectShow AMCap改装,无法解析的外部符号 "class CFactoryTemplate * g_Templates"
#ifdef FILTER_DLL
/* List of class IDs and creator functions for the class factory. This
provides the link between the OLE entry point in the DLL and an object
being created. The class factory will call the static CreateInstance
function when it is asked to create a CLSID_SystemClock object */
CFactoryTemplate g_Templates[1] = {
//{&CLSID_SystemClock, CSystemClock::CreateInstance}
{ L"SystemClock", &CLSID_SystemClock, CSystemClock::CreateInstance}
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
#endif
找到问题了,表面上看是STRMBASE.lib的问题,而STRMBASE.lib是编译自BaseClasses。上面的代码是关键,截取自BaseClasses项目的sysclock.cpp,FILTER_DLL没有预定义,所以出现问题,添加预定义就好了
VS2008下安装与配置DirectShow SDK 9.0 及 DirectShow AMCap改装的问题的更多相关文章
- Mac下安装及配置Appium环境
candiceli Mac下安装及配置Appium环境 我是小白,自己研究appium好几周了. 一开始按照同事这篇文章设置Mac下的环境,http://www.cnblogs.com/tangd ...
- Linux下安装和配置JDK与Tomcat(升级版)
在这个版本 Linux下安装和配置JDK与Tomcat(入门版) 的基础上优化升级 1.下载相关软件 apache-tomcat-6.0.37.tar.gz jdk-6u25-linux-i586-r ...
- [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.
为了更好的排版, 所以将IK分词器的安装重启了一篇博文, 大家可以接上solr的安装一同查看.[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://ww ...
- MAC下安装与配置MySQL
MAC下安装与配置MySQL MAC下安装与配置MySQL 一 下载MySQL 访问MySQL的官网http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL ...
- 64位Win7下安装与配置PHP环境【Apache+PHP+MySQL】
[软件下载] 本安装实例所使用安装文件如图所示: 其中,64位版本的MySQL安装文件mysql-5.5.33-winx64.msi,可直接从官网下载,下载地址:http://dev.mysql.co ...
- 使用ProxychainsMac下安装及配置
下面几种解决方式 一.先在VPS用composer把Laravel给拖回来,本地你就别想用Composer正常下载Laravel回来了 二.使用全局代理,暂时木有折腾过在终端下怎么折腾,GUI可以使用 ...
- windows下安装和配置mongoDB
上次在mac下安装和配置了mongodb,这次在windows下也尝试安装和配置mongodb. 1.首先下载mongodb压缩包,下载后解压到D盘或E盘.如下: 2.配置环境变量:桌面—计算机右键— ...
- Mac下安装和配置mongoDB
mac下的mongodb下载安装比较简单,主要有两种方式,一种是下载压缩包解压,另一种是通过npm或者homebrew命令安装,这里就不赘述了, 复杂的在于mongodb运行环境的配置(若未配置运行环 ...
- PHP学习之-Mongodb在Windows下安装及配置
Mongodb在Windows下安装及配置 1.下载 下载地址:http://www.mongodb.org/ 建议下载zip版本. 2.安装 下载windows版本安装就和普通的软件一样,直接下一步 ...
随机推荐
- Object类--equals方法
equals方法 1.比较的是对象引用的是否指向同一块内存地址 public static void main(String[] args) { HuaWei huawei=new HuaWei(); ...
- Spark:实现行转列
示例JAVA代码: import static org.apache.spark.sql.functions.col; import static org.apache.spark.sql.funct ...
- java多线程有哪些实际的应用场景?
多线程使用的主要目的在于: 1.吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的.简单的说,可能就是一个请求一个线程.或多个请求一个线程.如果是单线程,那同时只能处理一个用户的请求. ...
- IDEA + TortoiseSVN 导入 Eclipse 项目
IDEA 是目前最好用的 Java 开发工具,所以我一直用的 IDEA,但是项目是由 Eclipse 创建,并且项目中一部份成员用 Eclipse.由于版本控制一直用的小乌龟(TortoiseSVN) ...
- c/c++ 读入一行不确定个数的整数
假设有一个文件,文件的每一行包括n个整数,整数之间以一个空格隔开,文件总共有m行,但是事先不知道n,m.如何每次从文件中读取一行整数放到一个数组中. 可以分为两步:1.首先从文件中读入一行字符串,2. ...
- JSOUP爬虫示例
利用JSOUP做爬虫,爬取我博客中的所有标题加链接,代码示例如下: package com.test.jsoup; import java.io.IOException; import org.jso ...
- golang ----gc问题
go程序内存占用大的问题 这个问题在我们对后台服务进行压力测试时发现,我们模拟大量的用户请求访问后台服务,这时各服务模块能观察到明显的内存占用上升.但是当停止压测时,内存占用并未发生明显的下降.花了很 ...
- Xilinx 常用模块汇总(verilog)【03】
作者:桂. 时间:2018-05-10 2018-05-10 21:03:44 链接:http://www.cnblogs.com/xingshansi/p/9021919.html 前言 主要记 ...
- 基于mindwave脑电波进行疲劳检测算法的设计(2)
上文讲到的是保证硬件的接通.接下来是用C语言在它提供的API接口进行连接. 在网盘中下载MindSet Development Tools这个开发包.这个目录下MindSet Development ...
- 【Linux高级驱动】I2C驱动框架分析
1.i2c-dev.c(i2c设备驱动组件层) 功能:1)给用户提供接口 i2c_dev_init //入口函数 /*申请主设备号*/ register_chrdev(I2C_MAJOR(), &q ...