2010-03-29 163 views
5

是否存在與Linux頭文件等價的Win32?我正在開發一個Linux到Windows的端口(我第一次這樣做),並且在這個文件上失敗。Windows <sys/file.h>等效

+0

MinGW確實提供了一個,雖然它基本上只是指向 ... – susmits 2010-03-29 12:56:05

回答

4

編寫WIN32API應用程序時,通常是#include <windows.h> - 包括應用程序中的大部分Windows API。如果您需要減少其中一些內容,#define WIN32_LEAN_AND_MEAN將從Windows庫中消除一些更加晦澀的東西。

你想要轉換什麼功能?這可能是在WIN32上使用不同功能的情況;它與Linux/Unix/POSIX非常不同。

例如:ReadFile()功能大致相當於read()就一般想法而言,但調用簽名是非常不同的。 ReadFile的()的MSDN項說:

頁眉:WINBASE.H(包括WINDOWS.H)

1

如果要移植到Windows,它會更容易堅持到跨平臺的標準,而不是直接跳入本地的Windows Api端口(ala CreateFile)。

我不知道是什麼功能,它看起來像它的一部分POSIX標準頭文件,但我找不到在posix源文件中的引用。

您可以使用一些構建環境將linux/unix應用程序移植到Windows。

  • 如果您的應用程序堅持使用C標準庫來處理文件IO之類的事情,那麼Dev Studio應該支持本機的大部分功能。例如<stdio.h>有類似fopen的東西。
  • MinGW提供了一套工具,但使用微軟的c-runtime,所以像pthreads這樣的東西應該丟失。
  • Cygwin是一個更符合標準的POSIX構建環境。
  • SUA是微軟自己的產品。
0

爲子孫後代的利益,<sys/file.h>是低級別的文件I/O例程的BSD版本。根據您的編譯器安裝和構建環境,您可能需要<fcntl.h>。大多數通常的I/O例程都在<stdio.h>中,甚至是setvbuf(),這是相當低級別的控制。如果您希望在Linux(或其他* NICES)下通常不存在的I/O例程/設置,您需要<windows.h><conio.h>