es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: la estructura ‘_DDSURFACEDESC2’ no tiene un miembro llamado ‘DUMMYUNIONNAME’

Estoy intentando construir una aplicación antigua utilizando una máquina virtual de Windows XP Professional SP3. Configuré el entorno con mingw y todo está bien, excepto por este error durante el proceso de construcción:

error: ‘struct _DDSURFACEDESC2’ no tiene un miembro llamado ‘DUMMYUNIONNAMEN’

Parece que el encabezado ddraw.h proveniente de mingw tiene una estructura diferente. Intenté eliminar DUMMYUNIONNAMEN del código fuente de la siguiente manera:

// desc se pasa como argumento, inicializado en otro lugar
// tipo de desc –> LPDDSURFACEDESC2
int depth = desc->DUMMYUNIONNAMEN(4).ddpfPixelFormat.DUMMYUNIONNAMEN(1).dwRGBBitCount;

que he reemplazado por esto:

int depth = desc->ddpfPixelFormat.dwRGBBitCount;

De esta manera se genera el código, pero cuando ejecuto la aplicación a veces obtengo un error de VIOLACIÓN DE ACCESO y a veces (con diferentes archivos de entrada) no se muestra el video (ventana negra, solo audio).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error que estás experimentando está relacionado con una inconsistencia entre el encabezado ddraw.h proveniente de mingw y el encabezado original del Windows SDK. Esto puede ocasionar problemas al compilar aplicaciones antiguas en sistemas más nuevos.

    Tu intento de eliminar el miembro DUMMYUNIONNAMEN del código parece ser una posible solución, pero podría causar otros problemas y errores en la aplicación.

    El error de VIOLACIÓN DE ACCESO que estás recibiendo durante la ejecución probablemente se deba a problemas de acceso a memoria causados por la inconsistencia en el encabezado. Esto puede ser difícil de diagnosticar y solucionar.

    Una posible solución es intentar usar los archivos de encabezado originales del Windows SDK en lugar de los archivos de encabezado de mingw. Esto puede requerir alguna configuración y ajuste adicional, pero podría resolver el problema.

    También es posible que el problema esté en el propio código de la aplicación y no en los archivos de encabezado. Podría ser necesario realizar una depuración y análisis más detallados para determinar la causa exacta del problema.

Comments are closed.