包含 Windows Media SDK 库时出现多个错误

Posted

技术标签:

【中文标题】包含 Windows Media SDK 库时出现多个错误【英文标题】:Multiple errors when including Windows Media SDK libs 【发布时间】:2015-12-16 16:58:57 【问题描述】:

我正在尝试使用使用 Windows Media SDK 的 msvc2010 编译 Qt 项目 当我尝试包含 wmsbuffer.hwmsdkidl.h 文件时,我收到如下错误:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wmsbuffer.h(48) : error C2146: syntax error : missing ';' before identifier 'INSSBuffer'
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wmsbuffer.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wmsbuffer.h(48) : error C2146: syntax error : missing ';' before identifier 'INSSBuffer'
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wmsbuffer.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wmsbuffer.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wmsbuffer.h(48) : error C2086: 'int INSSBuffer' : redefinition
        C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wmsbuffer.h(48) : see declaration of 'INSSBuffer'

我认为问题在于我的 .pro 文件中没有正确的包含或库路径,但即使添加它也无济于事:

win32 

    INCLUDEPATH += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Include"
    DEPENDPATH += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Include"

    LIBS += -L"C:/Program Files/Microsoft SDKs/Windows/v7.1/lib" -lMscvrtd
    LIBS += -L"C:/Program Files/Microsoft SDKs/Windows/v7.1/lib" -lWmvcore

这些错误看起来也像我在循环包含中遇到的问题,但我没有发现其他任何东西表明这可能是这里的问题。

我是否忘记了一些非常明显的事情?

【问题讨论】:

你看过this吗? 【参考方案1】:

嗯,原来wmsdkidl.hwmsbuffer.h 中导致错误的行看起来都是这样的:

typedef interface IWMMediaProps IWMMediaProps;

但定义interface (<objbase.h>) 的标头似乎不包含在wmsbuffer.h 等中。

在我自己的标题中包含 objbase.h 并没有帮助,所以我用这个胶带解决方案解决了我的问题:

#define interface struct
#include <wmsdk.h>

这消除了错误,但由于重新定义了这个关键字而产生了很多警告......

我不完全确定发生了什么,或者为什么使用 interface 的库不包含它的定义,所以如果有人可以提供更好的解释和/或解决方案,请随意!

【讨论】:

您是否包含了 或类似内容?很多子系统的头文件都假设你首先包含了它。 @JBB 我尝试包含 windows.h,但这没有帮助。虽然它包含在项目的其他地方,所以我想它不会再次包含在这个文件中,从而导致这些问题。我想最好将所有 Windows SDK 标头包含在一个地方以避免此类问题(我还没有时间尝试此解决方案)。谢谢!

以上是关于包含 Windows Media SDK 库时出现多个错误的主要内容,如果未能解决你的问题,请参考以下文章

VS2017新建或拷贝项目编译时出现:找不到 Windows SDK 版本8.1.请安装所需的版本的 Windows SDK

使用静态库(facebook-ios-sdk)中定义的协议时出现不完整的协议警告

当安装INSTALL_FAILED_NO_MATCHING_ABIS时出现Android AIR 33错误:无法提取本机库,res = -113

安装 microsoft platform SDK for Windows Server 2003 SP1 后在 VS 2005 中编译时出现问题

Android SDK 管理器在选择存储库时出现“无法获取 URL https://dl-ssl.google.com/android/repository/repository.xml”错误

使用带有 iOS 5 SDK 的 TTThumbsViewController 时出现奇怪的白条