mac平台获取app路径
原本只是为了在mac平台简单地调用fopen、fwrite等函数,发现fopen需要包含绝对路径,才能正常使用;否则,即使调试时可以创建文件,直接调用app执行时,文件不会被创建。
为此,需要获取执行文件的绝对路径。用到函数_NSGetExecutablePath。这个函数获取的路径是app包里的执行文件的路径,直接在后面加上‘/../../../../‘到app路径也是不行的,大概是访问权限的问题,会导致fopen失败。
所以先将获取的路径处理一下,得到app路径,再在fopen中调用,经证实是OK的。
代码如下:
// get app path. #include <mach-o/dyld.h> char g_path[MAXPATHLEN+1]; - (void)getAppPath { uint32_t size = sizeof(g_path); if (_NSGetExecutablePath(g_path, &size) == 0) printf("executable path is %s\n", g_path); else printf("buffer too small; need size %u\n", size); // /Users/blade/proj//Output/MacOS/bin/TestTool.app/Contents/MacOS/TestTool if(strlen(g_path)) { int end,count = 0; for(int i = strlen(g_path) - 1; i>0; i--) { if(g_path[i] == '/') { count++; } if(count == 4) { end = i; break; } } if(end > 0) { memset(g_path+end,0,strlen(g_path)-end); } } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。