我知道这个问题以前已经被问过,但我仍然没有看到令人满意的答案,或者明确的“不,这不能做到”,所以我会再问一次!
我想要做的就是以独立于平台的方式获取当前运行的可执行文件的路径,无论是绝对路径还是相对于调用可执行文件的位置的相对路径。我虽然 boost::filesystem::initial_path 是我的麻烦的答案,但这似乎只能处理问题的“平台无关”部分 - 它仍然返回调用应用程序的路径。
作为一个背景知识,这是一个使用 Ogre 的游戏,我正在尝试使用 Very Sleepy 来分析它,它从自己的目录运行目标可执行文件,所以当然在加载时游戏找不到配置文件等并立即崩溃。我希望能够向其传递配置文件的绝对路径,我知道配置文件将始终与可执行文件一起存在。 Visual Studio 中的调试也是如此 - 我希望能够运行 $(TargetPath) 而无需设置工作目录。
据我所知,没有跨平台的方法。
对于 Linux:通过"/proc/self/exe"
to std::filesystem::canonical or readlink.
Windows:将 NULL 作为模块句柄传递给GetModuleFileName.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)