2010-03-29 16 views
5

Esiste un equivalente Win32 per il file di intestazione linux? Sto lavorando su una porta da Linux a Windows (e la mia prima volta) e non funziona su questo file.Windows <sys/file.h> equivalente

+0

MinGW fornisce uno , anche se essenzialmente punta solo a ... – susmits

risposta

4

Quando si scrivono le app WIN32API di solito si usa #include <windows.h> - che include la maggior parte delle API di Windows nell'applicazione. Se è necessario ridurre alcuni di questi include, #define WIN32_LEAN_AND_MEAN eliminerà alcune delle cose più oscure dalle librerie di Windows.

Quali funzioni stai cercando di convertire? Probabilmente si tratterà di utilizzare una funzione diversa su WIN32; è molto diverso da Linux/Unix/POSIX.

Esempio: la funzione ReadFile() è approssimativamente equivalente a read() in termini di idea generale, ma le firme di chiamata sono molto diverse. ReadFile() s 'entrata MSDN dice:

Intestazione: winbase.h (includere Windows.h)

1

Se si porting su Windows, sarebbe molto più facile da attaccare ad attraversare gli standard di piattaforma , che tuffarsi direttamente in una porta Api Windows nativo (ala CreateFile).

Non so cosa sia la funzionalità, sembra la sua parte dei file di intestazione standard POSIX, ma non riesco a trovare un riferimento ad esso nelle origini posix.

Esistono alcuni ambienti di compilazione che è possibile utilizzare per portare le applicazioni linux/unix a Windows.

  • Se l'applicazione si attacca alla libreria standard C per cose come il file IO, Dev Studio dovrebbe supportare la maggior parte di quella in modo nativo. <stdio.h> ad esempio ha cose come fopen.
  • MinGW fornisce un set di strumenti, ma utilizza il c-runtime microsoft, quindi cose come pthread dovrebbero essere mancanti.
  • Cygwin è un ambiente di build POSIX di gran lunga più conforme.
  • SUA è l'offerta di Microsofts.
0

Per il beneficio dei posteri, <sys/file.h> è la versione BSD delle routine di I/O di file di basso livello. A seconda dell'installazione del compilatore e dell'ambiente di compilazione, probabilmente vorrai invece <fcntl.h>. La maggior parte delle solite routine di I/O sono in <stdio.h>, anche setvbuf() che è un controllo piuttosto di basso livello. Avrai voglia di <windows.h> o <conio.h> se vuoi routine/impostazioni I/O che normalmente non esistono sotto Linux (o gli altri * NICE).

Problemi correlati