Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WSL(Ubuntu)是否与C+中的X11、glfw(3)编程兼容+;?_C++_Linux_X11_Glfw - Fatal编程技术网

C++ WSL(Ubuntu)是否与C+中的X11、glfw(3)编程兼容+;?

C++ WSL(Ubuntu)是否与C+中的X11、glfw(3)编程兼容+;?,c++,linux,x11,glfw,C++,Linux,X11,Glfw,我目前正在编译一些在WSL(Linux的Windows子系统)上的Linux系统上编写和测试的代码。这个依赖于图形的程序依赖于上述软件包(X11、libglfw和一些特定于linux的函数(ie pread)),我正试图让它在Windows上工作,至少在WSL环境下是这样 我使用的是: Windows 10,开发者模式,启用WSL,从Windows应用商店安装Ubuntu 用于支持X11和查看程序输出(?)的MobaXTerm 使用标准C++14的C++编译器 到目前为止我已经尝试过的(并且

我目前正在编译一些在WSL(Linux的Windows子系统)上的Linux系统上编写和测试的代码。这个依赖于图形的程序依赖于上述软件包(X11、libglfw和一些特定于linux的函数(ie pread)),我正试图让它在Windows上工作,至少在WSL环境下是这样

我使用的是:

  • Windows 10,开发者模式,启用WSL,从Windows应用商店安装Ubuntu
  • 用于支持X11和查看程序输出(?)的MobaXTerm
  • 使用标准C++14的C++编译器
到目前为止我已经尝试过的(并且被卡住了):

  • 使用Ubuntu(WSL)上与apt软件包管理器一起安装的
    libglfw3 dev
    • 问题:编译成功,但运行时崩溃。使用gdb,并从引发的异常进行跟踪:原始开发人员抛出一个错误,声称他们未能打开GLFW窗口(表明问题在于使用GLFW?)
  • 使用程序源附带的glfw3(以静态库形式(.a文件))
    • 问题:编译时错误:
      未定义对
      的引用:XF86VidModeQueryExtension、XRR*、Xinerama*、Xcursor错误到处都会弹出,尽管已使用apt安装了Xcursor、Xinerama、libxrandr dev
  • 重复使用
    cmakecmakelists.txt
    apt install…
    在WSL上从头开始编译glfw3,直到满足所有依赖项,
    make
    sudo make install
    ,最后删除静态库文件以查看这是否有帮助。为了确保我没有从1中使用libglfw3 dev,我使用
    apt remove
    • 问题:与1相同的问题(代码中的同一行)
  • 从glfw下载页面中插入预编译的Windows版本,以及为与mingw-w64一起使用而设计的附带dll。
    • 问题:编译时对
      \uuu imp.*
      的未定义引用源于win32\u init.c、vulkan.c、wgl\u上下文等

  • 有没有办法让glfw和X11在WSL/Windows上使用此程序?我很抱歉没有更详细的线索;但是,我无法共享实际代码。不过,我可以确认它在Ubuntu上编译并运行成功

    从windows应用商店下载的Ubuntu(当前)不支持任何图形界面。此功能仅为希望运行Linux终端实用程序的开发人员设计

    您无法在那里打开openGL窗口。它将创建一个窗口(内存缓冲区中),但没有“UI支持”来打开它。(MobaXTerm也不起作用)


    使用3d硬件访问以虚拟化模式运行Ubuntu。使用Hyper VVirtualBoxVMware(在虚拟机中运行Ubuntu)

    “我无法共享实际代码”——无论如何,你不应该这样做。请确保构造一个。请注意,这三个词都很重要:它应该只是一个示例,您不应该发布整个实际代码,而应该创建一个简单的示例来演示您的问题。此外,它应该是最小的,也就是说,它不应该包含任何不是证明问题绝对需要的内容。它应该是可复制的,这意味着如果我复制粘贴并运行代码,我会看到与您看到的完全相同的问题。我建议使用一个GLFW示例程序,并尝试在您的设置上构建和运行它。如果这不起作用,你可以在GLFW论坛上提问。答案基本上是否定的。这个问题是通过切换到MSYS2解决的,特别是使用安装附带的64位MinGW快捷方式。