从SDL检测可执行文件夹

时间:2009-01-26 12:31:01

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

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

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

此外,当前的方法并不是很好,因为它可能会改变某些命令行参数的含义。

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

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

3 个答案:

答案 0 :(得分:2)

自SDL 2.0.1起SDL_GetBasePath

答案 1 :(得分:1)

我强烈建议您在发布前进行搜索:How do I get the directory that a program is running from?

答案 2 :(得分:0)

physicsfsPHYSFS_getBaseDir()

  

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

     

辅助功能。

     

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

     

您应该在搜索路径中使用基础目录。