微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在MinGW中使用<X11 / Xlib.h>和<X11 / keysym.h>?

如何解决是否可以在MinGW中使用<X11 / Xlib.h>和<X11 / keysym.h>?

我正在浏览IOCCC网站时,偶然发现1998年名为banks的条目,该条目是卡尔·班克斯(Carl Banks)的飞行模拟器。我想尝试一下,所以下载了文件,但您可能知道(从MinGW),我是在Windows系统上(特别是Win-7 32位),当我尝试使用Cygwin和MinGW编译文件时它显示

banks.c:3:16: Fatal error: X11/Xlib.h: No such file or directory
3 | #include       <X11/Xlib.h>
  |                ^~~~~~~~~~~~
compilation terminated.
make: *** [makefile:92: banks] Error 1

和包含代码banks.c

#include                     <math.h>
#include                   <sys/time.h>
#include                   <X11/Xlib.h>
#include                  <X11/keysym.h>

是否有一种无需使用Linux即可编译文件方法

解决方法

当我在 1997 年写它的时候,我确实使用 Cygwin 在 Windows 上测试过它,所以我知道它当时可以工作,现在应该没有理由不工作。在 Cygwin 的包管理器中,您需要安装一个名为 libx11-dev 的包或类似的东西(X11 开发库),以及一个 X 服务器(可能称为 Xorg 之类的东西),当然还有 GCC 和开发make 之类的工具。您应该能够从开始菜单启动 Cygwin X 服务器,然后在 X 窗口内的后续终端窗口中,您可以 cd 到解压 IOCCC 获胜者的文件夹并运行 make。 (关于 Cygwin 的更多详细信息超出了本回复的范围;我主要是凭记忆来的,因为我已经多年没有使用过 Cygwin。)

但如果你想听听我的意见,就不要理会 Cygwin。构建和运行它的一种更简单的方法是获取 Linux 的 Live CD 并直接启动 Linux,然后在那里运行它。一些 Live CD 上有像 GCC 这样的开发工具,其他的则可以让您轻松下载 GCC。 Knoppix 是一种常见的选择。

(如果你真的想变态,你可以尝试安装适用于 Linux 的 Windows 子系统,这样你就可以在 Windows 上本地运行 Linux 程序。)

,

X11是基于Unix操作系统的窗口系统,因此不能在Windows上本地使用。

但是有一种方法可以运行X11程序并使用Cygwin编译器进行编译。为此,您将必须使用Cygwin/X,其中应包含X11库。

,

X Window服务器有一个Win32端口,称为Xming,通常用于连接远程Unix主机。

如果将MinGW与MSys2一起使用,则有一个名为mingw-w64-libxcb的软件包,因此可以编译和使用基于X11的程序。

关于程序本身(banks.c),最好直接为WinAPI编译(虽然不是那么简单)(是的,我知道这听起来比简单地运行make困难,但是该程序相当老,而且可能使用1998年编译器的非标准和过时的扩展名和特殊性,因此最好在熟悉的环境中进行调试/修复,在您所遇到的情况下,这恰好是Windows。源代码(经过模糊处理后)看起来像是围绕

for ( ; XPending (e) ; )

循环,直接翻译为WinAPI的

while (GetMessage(&msg,NULL,0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    ... all the code here
}

窗口创建和键回调也将转换为WinAPI。

EDIT1


该程序可以在Linux上的X11中开箱即用,但是它也需要从stdin提供一些数据(在Windows上应该不是问题,但是如果您没有安装“ cat”,这也将是必需的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。