zoukankan      html  css  js  c++  java
  • 关于 DirectShow 中各个例子的编译转换问题

    那些项目都是老旧的VC2003的,转换成05、08后,会有一系列编译问题,具体操作如下:

    1. 首先要安装 DirectX SDK 和 Windows SDK,两个版本最好是相对应的,一致的,不能一个旧一个新。

    2. 首先要编译基本库 BaseClasses, 编译时会遇到 ctlutil.h 中 operator=(LONG); 这一句不支持默认int的问题,这时需要在C/C++下的命令行添加一个编译指令 /wd4430

    3. BaseClasses这个项目的默认 include 目录是相对与以前的DXSDK目录设置的(.,..\..\..\..\include),现在过期了,要重新设置成新安装的include目录,同时需要更改管理员->命令行下那个附加的库,直接把库删掉就行

    4. 编译 StillCap,里面有个Qedit.h,新SDK For Win7里根本没有,幸好SDK6.0里有,找到它,去掉里面的一句话,把dxtrans.h注释掉,然后在#include <qedit.h>前面加上四句话

    #define __IDxtCompositor_INTERFACE_DEFINED__

    #define __IDxtAlphaSetter_INTERFACE_DEFINED__

    #define __IDxtJpeg_INTERFACE_DEFINED__

    #define __IDxtKey_INTERFACE_DEFINED__ 

    5. 编译 StillCap 会出现很多外部链接没有,其实少了一个 striids.lib ,这个lib是windows SDK的,新的SDK里叫做 strmiids.lib

    6. CMediaType 依赖的就是Baseclasses库,即需要strmbas lib

    Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow 下也有一份示例代码,这些代码都是最新的VS2005的,很好用,不过如果把include目录添加到了VC++目录的最后面,就会因为采用了VC8的旧h文件而出现 error C2061: syntax error : identifier '__deref_out_range’

    所以要把WinSDK和DXSDK的附加包含目录条目写在最前面!

  • 相关阅读:
    Struts2中There is no Action mapped for namespace错误解决方法
    String字符串常量池简介
    main方法中参数"String[ ] args"详解
    自定义异常基本用法
    finally关键字执行的底层原理
    Linux环境下安装mysql5.6(二进制包不是rpm格式)
    finalize关键字小结
    "=="和equals小结
    super关键字小结(构造方法的执行是不是一定会创建对象?)
    冒泡排序
  • 原文地址:https://www.cnblogs.com/xlhblog/p/2037591.html
Copyright © 2011-2022 走看看