【问题标题】:Where can I get windows.h for Mac?我在哪里可以获得 Mac 版 windows.h?
【发布时间】:2014-12-23 08:58:21
【问题描述】:

我正在尝试在 MacOSX 上编译我最初在 Windows 操作系统上编写的程序。该程序是一个带有 OpenGL API 的大型 C++ 程序,其中包含非常多的目录和文件。

最初编译过程遇到了 OpenGL for Mac 的问题,因此我下载了 OpenGL 的所有命令行实用程序以使其工作。但正如您可能想象的那样,OpenGL 下载中的每个 C 文件都有许多预处理器,而我又必须为每个预处理器下载依赖项。

但是,我还有一个关键步骤:我收到一个致命错误,提示找不到 windows.h 文件。这似乎是 Windows 系统固有的(在我庞大的程序目录列表​​中找不到 windows.h 文件),而且 Mac 似乎没有 windows.h 的等效项(http://cboard.cprogramming.com/c-programming/96087-windows-h-mac.html)。

我在尝试为 Mac 编译这个程序时运气不佳还是可以挽救一些东西?

【问题讨论】:

  • 我建议在其中安装 vmware fusion 和 windows 来编译包含 windows.h 的代码。您可以在 mac 中以某种方式包含 windows.h,但您将永远无法将代码作为windhows.h 运行,因为它特定于 windows 并包含链接到 windows 特定 dll 和定义的操作系统特定调用和声明。

标签: c++ c windows macos opengl


【解决方案1】:

您可以做的一件事是创建一个名为windows.h 的虚拟文件以满足#include 指令,然后通过查看编译器错误日志逐一追踪丢失的typedef、#defines 等。

Windows.h 是单一的,包括大约一百个其他 Windows 标头,但您的程序不需要所有这些定义。这假设您没有直接使用 Windows API,而只使用像 DWORD 这样简单的东西。如果您的软件是使用 GLUT 或 GLFW 之类的框架构建的,这是完全可能的,但如果您直接与 WGL 交互,那么您将面临很多工作。

【讨论】:

  • 我正在与 beGUI 交互,会不会有问题?
  • @white_rabbit:FrameWindow_win32.cpp/h 中的 beGUI 框架中似乎有一些特定于 Win32 的代码。我对它不够熟悉,无法告诉您是否必须重新编写它才能使其在 OS X 上运行,但似乎有一个示例使用 GLUT 而不是 Win32 API (@ 987654326@) - 这个例子应该是可移植的。
  • 看来是dummy file方式出现问题:OpenGL好像使用win32 api:../bcore/src/GL/wglew.h:114:15: error: unknown type name 'WINAPI'
  • 您认为也许使用 GLFW(而不是 beGUI)会有所帮助吗?还是说 OpenGL 需要 Win32 API 只是为了保持与 Windows 兼容?
  • OpenGL 根本不需要 Win32。每个平台都有自己的 API 来处理 OpenGL 的窗口化,Windows API 称为 WGL。 OS X 使用三种不同的 API:AGL/CGL/NSOpenGL(这是一个令人困惑的混乱)。现在,从您发布的错误看来,beGUI 取决于 WGL。 GLFW 不会有这个问题,但它不是一个 GUI 框架。你是在使用 beGUI 做任何与 GUI 相关的事情,还是只是为了创建一个 OpenGL 窗口?
【解决方案2】:

您无法获取适用于 mac 的 Windows.h,它是特定于 Windows 操作系统的。
另一方面,Windows.h 中使用的函数有许多替代方法。

【讨论】:

    【解决方案3】:

    windows.h由Windows SDK提供,由Windows操作系统自己实现。

    您需要重写程序以不使用 Windows API。
    祝你好运。

    【讨论】:

    • 如果我使用诸如beGUI之类的跨平台界面,您认为上述制作虚拟文件的方法是否可行?
    • @white_rabbit:仅当您不使用 windows.h 中的任何实际功能时。
    • 好的,看起来 OpenGL 正在使用 win32 API:../bcore/src/GL/wglew.h:114:15: error: unknown type name 'WINAPI' 这是一个严重的问题,不是吗?
    • 我正在考虑从 beGUI 重写为 GLFW?你会建议这样做来解决这个问题吗?
    • @white_rabbit:OpenGL 不使用 Windows API。但是您提到您下载了许多用于 OpenGL 的工具和文件。你为什么这么做?你不必那样做。您的问题很可能与您所做的这件事有关。
    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多