2010-03-29 32 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>