我正在尝试使用DirectShow进行音频播放。我有一个头文件,顶部是:
#pragma once
#include <dshow.h>
#pragma comment(lib, "strmiids.lib")
然后继续定义一个类。 当包括dshow.h时,我得到以下complilation错误:
C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ include \ ddraw.h(703):错误C2011:'_ DDPIXELFORMAT':'struct'类型重新定义
c:\ program files \ microsoft sdks \ windows \ v7.0 \ include \ ksmedia.h(5749):参见'_DDPIXELFORMAT'的声明
C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ include \ ddraw.h(2249):错误C2079:'_ DDSURFACEDESC :: ddpfPixelFormat'使用未定义的结构'_DDPIXELFORMAT'
C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ include \ ddraw.h(2292):错误C2079:'_ DDSURFACEDESC2 :: ddpfPixelFormat'使用未定义的结构'_DDPIXELFORMAT'
C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ include \ strmif.h(12918):错误C2011:'tagTIMECODE_SAMPLE':'struct'类型重新定义
c:\ program files \ microsoft sdks \ windows \ v7.0 \ include \ ksmedia.h(5274):参见'tagTIMECODE_SAMPLE'的声明
在这种情况下,我无法弄清楚会导致这些错误的原因。头文件是MFC项目的一部分,如果这有任何区别。有什么建议吗?
答案 0 :(得分:1)
通过更改#include定义的顺序来解决此问题。我将上面代码定义的头文件移动到顶部,现在可以正常工作了。一定是与另一个文件中的某些代码冲突,可能是一些与directSound相关的东西。
答案 1 :(得分:1)
我几次遇到过这个SDK集成错误,最近一次将win32控制台应用程序与使用Windows CoreAudio的库集成并且stdafx.h发生了错误:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0502 // Change this to the appropriate value to target other versions of Windows.
#endif
#include <stdio.h>
#include <tchar.h>
// TODO: reference additional headers your program requires here
#include <afx.h>
#include <afxwin.h>
然后为了解决这个错误,我在下面添加了以下内容:
#include <winioctl.h>
#if (MSC_VER < 1400)
#include <strmif.h>
#endif
希望这有助于将来面对这个问题的人。 EB