我几乎没有OSX编程方面的专业知识。我正在使用C ++开发基于Sprite的2D游戏。我的代码最初是为Visual Studio编写的,现在已移植到OSX。
在Windows环境中,所有I / O操作(例如,加载Sprite表)都使用相对路径来完成,该路径来自当前.exe目录。但是,在OSX环境中,编译后的程序在其他目录上执行,因此崩溃。从XCode执行时,它可以完美工作(因为它不会更改执行目录)。
Xcode设置为控制台应用程序。
我的问题:有什么方法可以设置程序,使其在正确的目录中执行?由于将要分发此程序,因此我希望在无需安装的情况下尽可能隐藏程序文件。
提前致谢
最佳答案
首先,让程序依赖于可执行文件在何处查找其文件是一个坏主意。最好在命令行或类似的地方传递一个指向配置文件的指针,并让配置文件说出所有数据的位置。这样,您很容易将可执行文件和数据安装在每个操作系统上最合适的位置
但是,要回答您的问题,请首先找到exe所在的目录,然后将工作目录更改为该目录。像这样:
char pathbuf[PATH_MAX + 1];
int bufsize = sizeof(pathbuf);
_NSGetExecutablePath( pathbuf, &bufsize);
chdir( pathbuf );
为简洁起见,省略了错误检查,但建议使用。您将需要包括:
#include <mach-o/dyld.h>
关于c++ - 如何在OSX的C++应用程序中正确使用文件I/O路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26121479/