【问题标题】:How do I build a DirectShow filter with Visual C++ 5.0?如何使用 Visual C++ 5.0 构建 DirectShow 过滤器?
【发布时间】:2016-12-16 17:27:11
【问题描述】:

我想尝试构建一个 DirectShow 转换过滤器。

我已经离开编程多年了,我想尝试重新开始。

我想尝试使用 DirectShow 为视频流设计一个转换过滤器。

但我无法让我的旧 Visual C++ 5.0 构建任何 DirectShow 示例。

我想我曾经可以,但现在我已经换了几次电脑,我不记得我过去做了什么让它工作。我在大约 10 到 15 年前安装了 DirectX 9.0,但我再也找不到安装文件了,所以我刚刚将保存安装的 dxsdk 文件夹复制到了新安装的 Visual C++ 5.0.

当我尝试构建其中一个示例时,它显示 "\DXSDK\INCLUDE\strmif.h(28) : fatal error C1189: #error : this stub requires an update version of rpcndr.h"

我不知道为什么我不再拥有它了。我不记得过去是否安装了可能包含它的 Visual C++ 更新。我只是不记得了。

我试图找到 DirectX 9 的安装文件,但我在 Microsoft 唯一能找到的是 DirectX 10,它只有几年的历史,并且似乎不再包括 DirectShow。而且我不知道重新安装 DirectX 是否能解决过时的“rpcndr.h”问题?

我尝试安装 Microsoft 提供的 Visual Studio 2015 社区,但它的安装速度似乎非常慢,而且从谷歌搜索看来,这对人们来说并不少见等待一两天完成安装!另外,它想在我的电脑上安装 13 GB,只是为了一个编程环境,而我的需求比这简单得多。所以我放弃了。

我喜欢我的旧 Visual C++ 5.0。这是我过去学习编程的方法,但我几乎不知道如何解决它。此外,它让我觉得它不再受支持,因为它似乎完全能够编译和构建好的程序。似乎没有明显的原因为什么它不能编译和构建 DirectShow 过滤器或应用程序。所以我想继续使用它,甚至制作一个 DirectShow 过滤器

谁能告诉我如果有办法让它工作吗?

我是否需要下载某种 SDK 来更新头文件和库,以获取我必须使用编译器的 DirectX SDK 文件?

谢谢。

【问题讨论】:

  • 哇,过去的爆炸。 VC6 及更早版本以“古怪”和具有非标准 C++ 实现而闻名。听起来这可能是个问题。请记住,当 DirectX 9 出现时,VC6 已经出现了 4 年。 (就个人而言,VC6 及更早版本非常古怪,以至于您几乎学习了一种与 C++ 不同的语言,它有自己的一套规则。较新的版本更符合相关标准。)跨度>
  • 是的,当标准尚未发布时,VC5 很难遵守标准。 :-) 必须查看我的 VC5 CD 才能看到上面写着“Designed for Windows 95 / Windows NT”。如果那不是你的 Windows 版本,你也应该升级编译器。

标签: c++ directshow


【解决方案1】:

在过去 20 年中发生了一些重要的变化,您希望加以考虑。

  • DirectShow 过滤器仍然可以正常工作
  • DirectShow 不再是 DirectX 的一部分,它已移至核心平台
  • 不需要 Visual C++ 5.0,Visual Studio 2015 社区就可以了
  • 您仍然可以使用 SDK 文件构建转换过滤器,但您需要特定的 SDK 和示例

您可能仍然使用 Visual C++ 5.0,这对我来说没有多大意义,但在这种情况下,您必须找到相应的较旧的 SDK。但是,存在某些问题的可能性很高,例如 DEP 不兼容。完全没有必要进入这个旅程,因为您可以使用当前的工具。

DirectShow 运行时现在是操作系统的一部分,您不需要任何可再发行组件。安装或拥有Windows SDK 7.1 很重要,因为它是附带一组示例的最后一个版本,其中包括 DirectShow 示例和 DirectShow BaseClasses。您需要这些样本,否则您将不得不chase for them on GitHub 或其他地方。

您将希望将包含所有最新更新和最新 Windows SDK 10 的 Visual Studio 2015 社区用作您的开发环境。转换 DirectShow 示例以升级各个项目,您将能够从 SDK 7.1 构建DirectShow Samples,顺便说一下,它已经包含一些流行的转换过滤器项目,例如EzRGB24 Filter Sample.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-22
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多