2010-03-29 10 views
5

¿Hay un Win32 equivalente al archivo de encabezado de Linux? Estoy trabajando en un puerto de Linux a Windows (y la primera vez que lo hago) y está fallando en este archivo.Windows <sys/file.h> equivalente

+0

MinGW proporciona un , aunque básicamente solo apunta a ... – susmits

Respuesta

4

Al escribir aplicaciones WIN32API generalmente #include <windows.h> - que incluye la mayor parte de la API de Windows en su aplicación. Si necesita reducir algunos de esos incluye, #define WIN32_LEAN_AND_MEAN borrará algunas de las cosas más oscuras de las bibliotecas de Windows.

¿Qué funciones estás tratando de convertir? Probablemente será un caso de usar una función diferente en WIN32; es muy diferente a Linux/Unix/POSIX.

Ejemplo: la función ReadFile() es más o menos equivalente a read() en cuanto a la idea general, pero las firmas pidiendo son muy diferentes. ReadFile() 's entrada de MSDN dice:

Cabecera: WinBase.h (incluya Windows.h)

1

Si está transfiriendo a las ventanas, que sería mucho más fácil cumplir con estándares de la plataforma cruzar , que sumergirse directamente en un puerto nativo de Windows Api (ala CreateFile).

No sé qué funcionalidad hay, parece que forma parte de los archivos de encabezado estándar POSIX, pero no puedo encontrar una referencia en las fuentes de POSIX.

Existen algunos entornos de compilación que puede usar para portar aplicaciones linux/unix a Windows.

  • Si su aplicación se atiene a la biblioteca estándar C para cosas como el archivo IO, Dev Studio debería admitir la mayoría de ellas de forma nativa. <stdio.h> por ejemplo tiene cosas como fopen.
  • MinGW proporciona un conjunto de herramientas, pero utiliza el c-runtime de microsoft, por lo que faltan cosas como pthreads.
  • Cygwin es un entorno de compilación POSIX mucho más conforme.
  • SUA es la propia oferta de Microsofts.
0

Para el beneficio de la posteridad, <sys/file.h> es la versión BSD de archivos de bajo nivel que las rutinas de E/S. Según la instalación del compilador y el entorno de compilación, probablemente querrá <fcntl.h>. La mayoría de las rutinas de E/S usuales están en <stdio.h>, incluso setvbuf(), que es un control de bajo nivel. Querrá <windows.h> o <conio.h> si quiere rutinas/configuraciones de E/S que normalmente no existen bajo Linux (o las otras * NICES).