gpt4 book ai didi

c++ - 为什么我的 SFML 游戏只能在终端中运行?

转载 作者:行者123 更新时间:2023-11-28 06:31:11 25 4
gpt4 key购买 nike

好的,这个问题需要更多的解释。

我使用 SFML 用 C++ 编写了一个游戏。因此,当我完成游戏(我使用的是 xcode)时,我转到“产品”>“存档”并将游戏的可执行文件保存在一个文件夹中。我将所有资源放在与可执行文件相同的文件夹中。当我双击可执行文件时,出现如下错误:

上次登录时间:12 月 17 日星期三 19:38:15,ttys001
我的 Macbook:~ My_Name$/Users/My_Name/Dropbox/SFML/DodgeBall/Builds/DodgeBall\Build\12-17/DodgeBall ;导出;
无法加载字体“sansation.ttf”(无法创建字体)
游戏崩溃:“ResourceLoader”类无法加载文件
注销

这部分:

游戏崩溃:“ResourceLoader”类无法加载文件

是我的游戏本身的输出。其余的我不明白。

但是当我进入终端并导航到我的游戏的可执行文件时,我可以这样做:

./DodgeBall

我的游戏运行良好。这是怎么来的?有没有一种方法可以让我双击可执行文件,它就会运行?

我使用的是 2010 年左右的 macbook、xcode 6、OSX Mavericks 和 SFML 2.1。

最佳答案

当您双击一个可执行文件时,操作系统 GUI 将您的可执行文件作为一个新进程运行,并将该进程的“当前目录”设置为某个任意目录。在 Windows 中,它是 C:/Windows/System32/ 之类的。然后,您的代码告诉操作系统打开 sansation.ttf,它检查当前目录和其他几个目录,然后找不到文件并放弃。

当您在控制台中“导航到我的游戏的可执行文件”,并以此方式启动程序时,控制台会将您的应用程序作为一个新进程运行,并将其“当前目录”设置为与控制台相同的目录,这是游戏可执行文件的目录。当您尝试打开 ttf 文件时,操作系统会检查当前目录,找到该文件,然后愉快地继续。

最好的解决方案是添加一个函数,将进程的当前目录更改为应用程序所在的位置。我不熟悉 Mac 操作系统,但我发现了这个:how to change the working directory to the location of the program .或者,您可以创建一个安装程序来创建某种系统变量来存储 tff 文件的位置。 (在 Windows 中,这可能是设置 PATH 或进行注册表项)

关于c++ - 为什么我的 SFML 游戏只能在终端中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com