我正在使用Visual Studio 2019 Enterprise开发跨平台(Windows / Linux)x64 GUI应用程序。
在此2019版中,我们可以使用Visual Studio 调试平台(Windows-本机)和Linux-Ubuntu(在虚拟机中运行)。
因此,我遵循了本教程,并使用Visual Studio 2019 IDE在Ubuntu 18 VM中运行和调试了这个GUI示例应用程序。 完美!
现在,我尝试创建自定义GUI应用程序:
要使用跨平台GUI,我使用的是GLFW 3.3。
步骤:
创建一个Visual Studio CMake项目
编写C ++代码和CMakeLists.txt
添加两个VS调试配置(Windows x64和Linux x64)
编译和链接(在VS Windows和Linux目标上均为确定)
运行(在Windows和Linux目标上均确定)
但是...
当我在Windows安装程序中运行它时,一切正常...显示了GLFW窗口... 好!
当我在Linux调试程序(由Visual Studio)中运行它时,VS调试器命中glfwInit()
行时,出现了以下错误:
Starting GLFW context, OpenGL 3.3
Glfw Error 65544: X11: The DISPLAY environment variable is missing
因此,当我选择Linux调试配置时,我的VM中没有GUI窗口。
在Internet上搜索时,我看到有必要对Visual Studio说“ ”,以便在launch.vs.json文件中导出DISPLAY linux环境变量。
您可以在这里看到它: https://docs.microsoft.com/en-us/cpp/build/get-started-linux-cmake?view=vs-2019
在我的VM Ubuntu中,我得到了DISPLAY:0
然后,我写了我的launch.vs.json文件:
"export DISPLAY=:0;${debuggerCommand}"
或
"export DISPLAY=:0.0;${debuggerCommand}"
详细信息:
如果我手动进入我的Ubuntu VM,然后双击已编译的应用程序,它将显示GLFW窗口,并且一切正常!
我的问题是:
如何使用Visual Studio 2019 IDE将DISPLAY环境变量导出到Linux VM以调试将在Virtual Box(VM)中运行的应用程序。
答案 0 :(得分:1)
Microsoft C ++团队的一些好人(感谢Ion,Erika和Elisabeth)帮助我,我找到了解决方案。
问题与Visual Studio 自动生成的“ launch.json”文件有关。
“ launch.json”的哪些属性我必须更改:
1-设置"name": "helloworld"
。默认值为" "
。
2-设置"project": "CMakeLists.txt"
。默认值为" "
。
3-设置"projectTarget": "helloworld"
。该属性不是VS 2019自动创建的。不是。
4-设置"cwd": "${debugInfo.defaultWorkingDirectory}"
。默认值为"${debugInfo.defaultRemoteDirectory}"
5-在pipeArgs中添加"export DISPLAY=:0;"
6-删除行"processId: 0"
。通过此行,只有root用户可以在Linux上进行部署和调试。
7-在pipeArgs中添加新行:"--tty=${debugInfo.tty}"
。创建CMake Project VS2019时自动不生成此行
所以pipeArgs是:
"pipeArgs": [
"/s",
"${debugInfo.remoteMachineId}",
"/p",
"${debugInfo.parentProcessId}",
"/c",
"export DISPLAY=:0;${debuggerCommand}",
"--tty=${debugInfo.tty}"
]