【问题标题】:Detect executable folder from SDL从 SDL 检测可执行文件夹
【发布时间】:2010-10-03 12:55:41
【问题描述】:

我正在创建一个 C++ SDL 游戏引擎,知道可执行文件的路径是相关的,因为图像和其他资源不存储在可执行文件中 - 它们位于单独的文件夹中(“res/”)。

在 Linux 下,我使用一个 shell 脚本“rungame.sh”,它 cd 到可执行文件路径,然后运行可执行文件(然后使用“./”来引用可执行文件夹)。 但是,我认为这是一种“丑陋”的方法,我希望它与 Windows 兼容。

另外,目前的方法不是很好,因为它可能会改变一些命令行参数的含义。

我想要一个跨平台(*NIX、Windows 和 Mac OS X,如果可能的话)的解决方案来获取可执行文件的当前路径。游戏路径/可执行文件名可能会改变。

解决我的问题最简洁的方法是什么(最好使用 std::string 和尽可能少的平台相关 API)?

【问题讨论】:

    标签: c++ path cross-platform directory sdl


    【解决方案1】:

    从 SDL 2.0.1 开始,有 SDL_GetBasePath

    【讨论】:

      【解决方案2】:

      强烈建议发帖前先搜索一下:How do I get the directory that a program is running from?

      【讨论】:

      • 其实这不是我需要的解决方案。那是关于获取当前目录路径。我想要 EXECUTABLE 目录路径。如果我运行'cd /something/'然后运行'./x/y',它将输出'/something/'并且我希望它输出'/something/x/'。
      • 原来它也有这个答案。但是,这不是问题,所以我想我无法使用 StackOverflow 的搜索系统发现它。
      【解决方案3】:

      physicsfs 拥有PHYSFS_getBaseDir()

      获取应用程序所在的路径。

      辅助函数。

      获取“基本目录”。这是应用程序所在的目录 run from,可能是安装目录,可能也可能 不是进程的当前工作目录。

      您可能应该在搜索路径中使用基本目录。

      【讨论】:

        猜你喜欢
        • 2017-04-19
        • 1970-01-01
        • 2021-09-13
        • 2019-06-12
        • 1970-01-01
        • 2014-06-02
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多