Solución:
Los typedefs que faltan (HANDLE
etc.) no son tu problema. Su problema es que Linux y Windows tienen API completamente diferentes, no puede simplemente esperar trasladar una a la otra reemplazando algunas definiciones de tipo.
La parte completa de su código que depende de la plataforma debe ser reemplazada. Por lo tanto, su primer paso es aprender la API de Linux. La mejor forma de hacerlo es con un libro sobre programación de Linux.
Además, Linux no proporciona una API predeterminada para la administración de ventanas como lo hace Windows, por lo que si está programando una aplicación gráfica, también debe elegir una biblioteca de ventanas.
No hay “equivalente”, por así decirlo, para windows.h en Linux, necesita corregir sus errores caso por caso, o mejor, reescribir su código para Linux (si no es demasiado complicado).
Sin embargo, si ignoramos las API específicas de Windows, es posible que pueda corregir errores de typedef (DWORD, HANDLE, …):
#ifndef DWORD
#define WINAPI
typedef unsigned long DWORD;
typedef short WCHAR;
typedef void * HANDLE;
#define MAX_PATH PATH_MAX
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int BOOL;
#endif
código fuente typedef
Tener windows.h significa que su aplicación usa la API del sistema operativo Windows, no hay mapeo 1 a 1 para bibliotecas en Linux.
Puede considerar ejecutar su aplicación en Wine si no desea portar la aplicación.