c ++可执行文件从命令行运行,但不是从eclipse运行

c++ executable runs from command line, but not from eclipse

我正在尝试学习使用 SDL2 库的教程。我已逐字遵循说明 here

程序编译正常,但是当我尝试在 eclipse 中 运行 它时,调用 SDL_Init(SDL_INIT_VIDEO):

时出现以下错误

No available video device

经过一些研究,我认为这是因为 SDL2 没有正确链接到任何显示驱动程序,因此浪费了几个小时从源代码安装它,并尝试了各种论坛上建议的各种修复。

在学习了另一个教程之后,我发现我的 SDL2 安装没有任何问题。事实上,当我从终端 运行 由 eclipse 项目创建的可执行文件时,它 运行 没有任何问题。

有类似的问题(例如here),但我找不到一个错误发生在eclipse中的问题,而不是终端。

任何指点将不胜感激。我怀疑这可能与未设置的环境变量有关,但不确定是哪个或为什么。基于对 SO 的回答,我添加了 DISPLAY 环境变量并在项目设置中将其设置为 :0 但没有成功。

更新:我找到了一种快速将所有 bash 环境变量添加到我的 eclipse 项目的方法,但我仍然收到 No available video device 错误。

更新 2:事实证明我没有在正确的位置添加环境变量(我是将它们添加到 C++ 构建环境,而不是 运行 环境;这显然是应用程序出现问题的地方正在建设但不是 运行ning)。在下面发布答案。

原来是环境变量的问题。要修复您需要将环境变量 DISPLAY 添加到您的项目并将其设置为 :0.0.

为此,右键单击您的项目,然后 select 运行 As >> 运行 Configurations...

然后 select 在左侧面板中显示您的应用程序。 Select 右侧的环境选项卡。单击新建...,然后在名称:字段中输入 DISPLAY,在值:字段中输入 :0.0

单击“应用”,然后单击“运行”,它应该会起作用。感谢@Anon Mail 为我指明了环境变量的方向。