2010-03-31 2 views
1

J'essaie de faire quelques choses en utilisant DirectShow pour la lecture audio. J'ai un fichier d'en-tête, en haut est:L'inclusion de dshow.h entraîne des erreurs de définition

#pragma once 
#include <dshow.h> 
#pragma comment(lib, "strmiids.lib") 

puis il définit une classe. En incluant dshow.h-je obtenir les erreurs de complilation suivantes:

C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ include \ ddraw.h (703): erreur C2011: '_DDPIXELFORMAT': redéfinition type 'struct'

c: \ program files \ microsoft \ windows sdks \ v7.0 \ include \ ksmedia.h (5749): voir la déclaration de '_DDPIXELFORMAT'

C: \ Program Files \ Microsoft SDK \ Windows \ v7.0 \ include \ ddraw.h (2249): erreur C2079: '_DDSURFACEDESC :: ddpfPixelFormat' utilise une structure non définie '_DDPIXELFORMAT'

C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ include \ ddraw.h (2292): erreur C2079: '_DDSURFACEDESC2 :: ddpfPixelFormat' utilise struct undefined '_DDPIXELFORMAT'

C: \ Program Files \ SDK Microsoft \ Windows \ v7.0 \ include \ strmif.h (12918): erreur C2011: 'tagTIMECODE_SAMPLE': redéfinition du type 'struct'

c: \ fichiers de programme \ microsoft sdks \ windows \ v7.0 \ include \ ksmedia.h (5274): voir la déclaration de 'tagTIMECODE_SAMPLE'

Je n'arrive pas à comprendre ce qui causerait ces erreurs dans ce cas. Le fichier d'en-tête fait partie d'un projet MFC si cela fait une différence. Aucun conseil?

+0

D'où vient votre 'dshow.h'? Le même SDK, ou ailleurs? – SamB

Répondre

1

Correction de ce problème en modifiant l'ordre des définitions #include. J'ai déplacé le fichier d'en-tête que le code ci-dessus a été défini en haut et cela fonctionne bien maintenant. Doit avoir été un conflit avec du code dans un autre fichier, éventuellement des trucs liés à directSound.

1

J'ai fait face à cette erreur d'intégration du SDK une ou deux fois, le plus récemment lors de l'intégration d'une application de la console win32 avec une bibliothèque qui utilise Windows CoreAudio et l'erreur est survenue avec un 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> 

Puis résoudre l'erreur, j'ai ajouté ce qui suit ci-dessous le courant comprend:

#include <winioctl.h> 
#if (MSC_VER < 1400) 
#include <strmif.h> 
#endif 

Espérons que cela aidera quelqu'un dans l'avenir face à ce problème. EB

Questions connexes