Problema con el Visual C++ y DirectX

22/09/2003 - 20:38 por Juan | Informe spam
Hola a todos!

Tengo un problema con una aplicacion que estoy
desarrollando en Visual C++ .NET 2003.

Es una aplicacion con DirectX 9.

Tengo incluidas las rutas de los archivos .LIB y .H de
DirectX. De hecho puedo compilar los demos de DirectX SDK.

Pero al hacer un BUILD de mi aplicacion me marca el
siguiente error:

ConVentanas error LNK2001: unresolved external symbol
_IID_IDirectDraw7


Esta es la linea que provoca ese error en el linker.

if FAILED(DirectDrawCreate(NULL, &lpdd, NULL))
{
return (0);
}

if FAILED(lpdd->QueryInterface(IID_IDirectDraw7, (LPVOID *)
&lpdd7))
{
return (0);
}

Si yo elimino la linea QueryInterface todo esta bien,
¿pero que estare haciendo mal?
Necesito conseguir una Interface IDirectDraw7.

Gracias de antemano.
 

Leer las respuestas

#1 Ignacio Nicolás Rodríguez
23/09/2003 - 00:15 | Informe spam
Los GUIDs son cadenas suficientemente grandes como para que uno quiera
centralizarlos en un único lugar.
En lugar de que queden, como macros, replicadas en cada punto en que se hace
referencia, es preferible tener un módulo donde se definen, y otros tantos
lugares donde se referencian.
Ese manejo es muy común y para eso justamente, las macros de definición de
GUIDs han sido armadas.

Para solucionar tu problema puedes crear un módulo .C o .CPP y definir un
símbolo INITGUID antes de incluir los headers de DirectX. Algo como

// - ddguids.c -
#define INITGUID
#include <directdraw.h>

Saludos! Ignacio Nicolás Rodríguez, MCSD.Net/MCT.--


"Juan" escribió en el mensaje
news:03c701c38138$a7449ff0$
Hola a todos!

Tengo un problema con una aplicacion que estoy
desarrollando en Visual C++ .NET 2003.

Es una aplicacion con DirectX 9.

Tengo incluidas las rutas de los archivos .LIB y .H de
DirectX. De hecho puedo compilar los demos de DirectX SDK.

Pero al hacer un BUILD de mi aplicacion me marca el
siguiente error:

ConVentanas error LNK2001: unresolved external symbol
_IID_IDirectDraw7


Esta es la linea que provoca ese error en el linker.

if FAILED(DirectDrawCreate(NULL, &lpdd, NULL))
{
return (0);
}

if FAILED(lpdd->QueryInterface(IID_IDirectDraw7, (LPVOID *)
&lpdd7))
{
return (0);
}

Si yo elimino la linea QueryInterface todo esta bien,
¿pero que estare haciendo mal?
Necesito conseguir una Interface IDirectDraw7.

Gracias de antemano.

Preguntas similares