【问题标题】:Mac SDL+OpenGL App refuses to launch from anything but terminalMac SDL+OpenGL App 拒绝从终端启动
【发布时间】:2013-05-23 01:01:06
【问题描述】:

我们有一个fairly mature cross-platform game engine,我们已经在 OSX 上运行了好几年了。我们最近将游戏从 SDL 1.2.15 升级到 2.0,在转换的某个时刻,我搞砸了一些事情,现在我们遇到了一个奇怪的问题,即应用程序从终端启动得很好,但是当您从在 Finder 中双击,它只会在 Dock 中弹跳一次,然后就消失了。

我们感到困惑,因为据我所知,Console.app 中只打印了一行:Exited with code: 255(从终端自然运行在这里没有帮助,因为我们无法在那里重现问题; 应用程序在终端中启动时运行良好)。

所以我们唯一能想到的是,它要么是我们在 main.cpp 中搞砸的东西,要么是我们在设置 dylibs/frameworks 时使用的东西。这也可能与工作目录设置不正确有关,但尽我所能,我相信我们做得对(无论您当前的工作目录如何;该应用程序试图强行将所述目录设置为位于 Resources 文件夹中 - 这是启动游戏所必需的,但我不知道我们是否做错了)。对于stackoverflow来说,这感觉有点尴尬,对此我深表歉意,因为这不是一个简单的“粘贴这段代码并询问有什么问题”的工作。我有两种方法让你重现它;首先,我们是一个开源项目,您可以获得我们的源代码(完整的 mac 项目文件和 repo 中包含的所有依赖项,完全按照我可能错误地创建它们的方式进行设置和准备), at our github page。您需要做的一项更改是在根级别打开一个名为master-config.cfg 的文件,并从中删除// cmets(这样引擎就知道您要启动引擎附带的简单演示游戏) .

或者,我有一个精简(约 15mb 压缩)binary you can directly download 并尝试运行,如果这足以诊断问题。

如前所述,我们是开源的,所以我们欢迎任何修复请求!

【问题讨论】:

    标签: macos opengl shared-libraries sdl


    【解决方案1】:

    您需要编写一个最小的 Cocoa 包装器,这样 OS X 就不会因为没有正确启动而SIGKILL您。我会用那个包装器给你一个拉取请求。

    【讨论】:

    • 所以我们发现了问题;出于某种原因,其他尝试过它的人向控制台输出的数据比我们多。事实证明,问题在于 -psn 或 Finder 传入的任何参数曾经由 SDLMain 处理,但现在我们的 main() 得到它,并因此退出。无论如何,这是一个有趣的想法,也是唯一的答案,所以我给了你赏金。
    猜你喜欢
    • 2016-04-25
    • 2023-03-03
    • 1970-01-01
    • 2020-04-21
    • 2013-05-12
    • 2014-11-11
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    相关资源
    最近更新 更多