我正在尝试使用msvc2010编译一个使用Windows Media SDK的Qt项目
当我尝试包含wmsbuffer.h
或wmsdkidl.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
}
这些错误看起来也像我通过循环收录而得到的东西,但我还没有找到任何其他东西来表明这可能是问题所在。
我忘记了一些非常明显的事吗?
答案 0 :(得分:0)
嗯,事实证明wmsdkidl.h
和wmsbuffer.h
中导致错误的行看起来像这样:
typedef interface IWMMediaProps IWMMediaProps;
但定义interface
(<objbase.h>
)的标题似乎并未包含在wmsbuffer.h
等中。
在我自己的标题中包含objbase.h
没有帮助,所以我用这个胶带解决方案解决了我的问题:
#define interface struct
#include <wmsdk.h>
哪个摆脱了错误,但由于重新定义了这个关键字而产生了很多警告......
我不完全确定发生了什么或为什么使用interface
的库不包含其定义,所以如果有人可以提供更好的解释和/或解决方案,请随意!