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

Multiple errors when including Windows Media SDK libs

本文关键字:错误 Windows Media SDK 包含      更新时间:2023-10-16

我正试图用msvc2010编译一个使用Windows Media SDK的Qt项目当我尝试包含wmsbuffer.hwmsdkidl.h文件时,我会遇到以下错误:

C:Program FilesMicrosoft SDKsWindowsv7.1Includewmsbuffer.h(48) : error C2146: syntax error : missing ';' before identifier 'INSSBuffer'
C:Program FilesMicrosoft SDKsWindowsv7.1Includewmsbuffer.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.1Includewmsbuffer.h(48) : error C2146: syntax error : missing ';' before identifier 'INSSBuffer'
C:Program FilesMicrosoft SDKsWindowsv7.1Includewmsbuffer.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.1Includewmsbuffer.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.1Includewmsbuffer.h(48) : error C2086: 'int INSSBuffer' : redefinition
        C:Program FilesMicrosoft SDKsWindowsv7.1Includewmsbuffer.h(48) : see declaration of 'INSSBuffer'

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

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
}

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

我忘了什么很明显的事了吗?

事实证明,在wmsdkidl.hwmsbuffer.h中导致错误的行看起来都是这样的:

typedef interface IWMMediaProps IWMMediaProps;

但是定义interface<objbase.h>)的报头似乎不包括在wmsbuffer.h等中

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

#define interface struct
#include <wmsdk.h>

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

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