库文件和编译器设置

[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

若要使用 Windows Media 格式 SDK 开发应用程序,必须使用Microsoft Visual C++版本 6.0 或更高版本。 唯一适合开发的编程语言是 C++ 和 C。

下表描述了此 SDK 中包含的各种头文件的内容。

头文件 描述
asferr.h 定义与 ASF 文件操作相关的错误代码。 此标头包含在 wmsdk.h 中。
drmexternals.h 定义用于数字版权管理 (DRM) 的结构、枚举和常量。 编写使用 DRM 的应用程序时,请包含此标头。
dshowasf.h 定义 Microsoft DirectShow QASF 筛选器。 编写创建或读取 ASF 文件的 DirectShow 应用程序时,请包含此标头。 有关详细信息,请参阅 DirectShow 和 Windows Media
msnetobj.h 定义 IRMGetLicense 接口,该接口在随 Windows Media Format SDK 一起安装的某个运行时库中实现。
nserror.h 定义 Windows 媒体技术的错误代码。 这些错误代码中只有一部分与 Windows Media Format SDK 相关。 此标头包含在 wmsdk.h 中。
wmdxva.h 包括启用 Microsoft DirectX 视频加速以播放基于 Windows Media 的内容所需的其他标头和定义。 有关详细信息,请参阅 启用 DirectX 视频加速
wmnetsourcecreator.h 包含创建网络源插件所需的信息。
wmsbuffer.h 定义缓冲区对象使用的接口。 创建自己的用于文件读取的缓冲区时,请包含此标头。
wmsdk.h 使用 Windows Media Format SDK 的应用程序的main标头。 此标头不包含定义,但包含 asferr.h、nserror.h、windows.h 和 wmsdkidl.h。 对于使用此 SDK 的所有应用程序,包括此标头。
wmsdkidl.h 为 Windows Media Format SDK 的大多数对象定义接口、函数、结构、枚举和常量。 此标头包含在 wmsdk.h 中。
wmsinternaladminnetsource.h 定义网络源插件的接口。
wmsysprf.h 定义系统配置文件的常量。 将此标头包含在按标识符加载系统配置文件的应用程序中。

若要使用 Windows Media Format SDK,必须正确配置编译器。 在调试模式下生成的配置与发布模式的配置不同。 根据下表配置设置。 所有这些设置都在“项目设置”对话框中配置。 若要访问对话框,请从“项目”菜单中选择“设置”。

设置 调试值 发布值
(C/C++ 选项卡,类别 = 代码生成) 使用运行时库 调试多线程 DLL 多线程 DLL
(链接选项卡,类别 = 常规) 忽略所有默认库 (检查框) 选定 选定
(链接选项卡,类别 = 常规) 对象/库模块 包括 Msvcrtd.lib,Wmvcore.lib.Do 不包括 Libc.lib 或任何变体。
包括 Msvcrt.lib,Wmvcore.lib.Do 不包括 Libc.lib 或任何变体。

如果使用 Microsoft Visual Studio .NET,则设置已更改为不同的位置,如下表所示。 所有这些设置都在 “属性页 ”对话框中配置。 若要访问对话框,请在“解决方案资源管理器”窗格中右键单击项目,然后从上下文菜单中选择“属性”。

设置 调试值 发布值
(配置属性 / C/C++ / 代码生成) 运行时库 多线程调试 DLL (/MDd) 多线程 DLL (/MD)
(配置属性/链接器/输入) 其他依赖项 包括 Msvcrtd.lib,Wmvcore.lib.Do 不包括 Libc.lib 或任何变体。
包括 Msvcrt.lib,Wmvcore.lib.Do 不包括 Libc.lib 或任何变体。
(配置属性/链接器/输入) 忽略所有默认库

如果要延迟加载Wmvcore.dll或任何其他 DLL,请使用 Microsoft Visual C++ 6.0 中的链接选项 /DELAYLOAD,或在 Microsoft Visual C++ .NET 中使用延迟加载的 DLL。

此外,还需要包含 Windows Media Format SDK 的库和标头的目录。 若要查找 Visual C++ 6.0 的目录设置,请在“工具”菜单上单击“选项”,然后单击“目录”选项卡。使用 Visual C++ .NET 时,单击“工具”菜单上的“选项”,然后在选项列表中选择“项目/VC++ 目录”。 添加目录,如下表所示。 如果更改了 Windows Media 格式 SDK 的安装目录,则路径将有所不同。

目录类型 默认路径
包含文件 C:\WMSDK\WMFSDK11\include
库文件 C:\WMSDK\WMFSDK11\lib

如果使用平台 SDK,则默认路径如下所示:

目录类型 默认路径
包含文件 C:\Program Files\Microsoft SDsK\Windows\v6.0\Include
库文件 C:\Program Files\Microsoft SDsK\Windows\v6.0\Lib

在调用任何创建函数之前,应通过调用 Coinitialize 或 CoinitializeEx 初始化 COM。 可以使用自由线程模型或单元线程模型,但单元线程模型对应用程序施加线程限制。 有关 Microsoft 组件对象模型 (COM) 的详细信息,请参阅 Microsoft 网站上的 COM 页面。

注意 播放或创建受数字版权管理 (DRM) 保护的文件的应用程序需要从 Microsoft 单独获取的个性化静态库。 有关详细信息,请参阅 Microsoft 网站上的 Windows 媒体许可表单。 如果使用 DRM 库,则不应链接到 Wmvcore.lib。

入门