【问题标题】:Windows <sys/file.h> equivalentWindows <sys/file.h> 等效项
【发布时间】:2010-03-29 12:53:01
【问题描述】:

是否有相当于linux头文件的Win32?我正在使用 Linux 到 Windows 的端口(也是我第一次这样做),但在这个文件上失败了。

【问题讨论】:

  • MinGW 确实提供了一个 ,尽管它本质上只是指向 ...

标签: linux winapi port header-files


【解决方案1】:

为了后代的利益,&lt;sys/file.h&gt; 是低级文件 I/O 例程的 BSD 版本。根据您的编译器安装和构建环境,您可能需要&lt;fcntl.h&gt;。大多数常见的 I/O 例程都在 &lt;stdio.h&gt; 中,甚至在 setvbuf() 中,这是相当低级的控制。如果您想要在 Linux(或其他 *NICES)下通常不存在的 I/O 例程/设置,您将需要 &lt;windows.h&gt;&lt;conio.h&gt;

【讨论】:

    【解决方案2】:

    如果您要移植到 Windows,那么坚持跨平台标准要比直接使用原生 Windows API 端口(CreateFile 等)容易得多。

    我不知道&lt;sys/file.h&gt; 中有什么功能,它看起来像是 POSIX 标准头文件的一部分,但我在 posix 源代码中找不到对它的引用。

    您可以使用一些构建环境将 posix 应用程序移植到 Windows。

    • 如果您的应用程序在文件 IO 等方面坚持使用 C 标准库,Dev Studio 应该原生支持其中的大部分内容。 &lt;stdio.h&gt; 例如有 fopen 之类的东西。
    • MinGW 提供了一套工具,但使用的是 microsoft c-runtime,所以应该缺少 pthreads 之类的东西。
    • Cygwin 是一个更加符合 POSIX 的构建环境。
    • SUA 是微软自己的产品。

    【讨论】:

      【解决方案3】:

      在编写 WIN32API 应用程序时,您通常会#include &lt;windows.h&gt; - 这包括您应用程序中的大部分 Windows API。如果您需要减少其中的一些包含,#define WIN32_LEAN_AND_MEAN 将从 Windows 库中删除一些更晦涩的内容。

      您要转换哪些函数?这可能是在 WIN32 上使用不同功能的情况;它与 Linux/Unix/POSIX 非常不同。

      示例:ReadFile() 函数大致相当于read(),但调用签名有很大不同。 ReadFile() 的 MSDN 条目说:

      头文件:WinBase.h(包括 Windows.h)

      【讨论】:

        猜你喜欢
        • 2015-06-22
        • 2017-06-26
        • 2021-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-11
        • 2011-06-29
        • 2012-07-11
        相关资源
        最近更新 更多