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

时间:2015-12-16 16:58:58

标签: c++ windows qt visual-studio-2010

我正在尝试使用msvc2010编译一个使用Windows Media SDK的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
}

这些错误看起来也像我通过循环收录而得到的东西,但我还没有找到任何其他东西来表明这可能是问题所在。

我忘记了一些非常明显的事吗?

1 个答案:

答案 0 :(得分:0)

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

typedef interface IWMMediaProps IWMMediaProps;

但定义interface<objbase.h>)的标题似乎并未包含在wmsbuffer.h等中。

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

#define interface struct
#include <wmsdk.h>

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

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