在Xcode中使用c ++ mac应用程序。当我点击运行时,一切都很好(调试和发布模式)。但是,当我进入finder进入Products / Release文件夹并直接双击.app时,该应用程序立即关闭并出现错误(应用程序意外退出。单击报告以查看更多详细信息)。当我单击报告时,出现错误的代码行似乎表明它找不到我的资源文件,但是当我从xcode构建/运行相同的应用程序时,它发现它们很好。这是我如何在代码中使用资源文件的示例:
std::ifstream file;
file.open("AppName.app/Contents/Resources/Saves/1.svd");
//do stuff
file.close();
有谁知道为什么双击刚刚创建的xcode的.app与从xcode运行它会有不同的结果?
也不确定这是否是问题的一部分,但是我不得不从.app文件(AppName.app/Contents/Resources/Saves/1.svd)外部引用资源文件夹,这似乎很奇怪。我希望该路径相对于.app / Contents / MacOS中的可执行文件是这样的(../Resources/Saves/1.svd),但这也不起作用。
我遇到了类似的问题,并花了一些时间研究不同的选择,最终我还是使用了苹果公司的产品。我需要获取资源文件夹:
#ifdef __APPLE__
#include "CoreFoundation/CoreFoundation.h"
#endif
那么实际的代码片段是:
#ifdef __APPLE__
char path[FILENAME_MAX];
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle);
if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX)){
//
//log("CFURLGetFileSystemRepresentation returned false. Path:%s", path);
exit(0);
}
CFRelease(resourcesURL);
chdir(path);
//log("Current path:%s", path);
#endif
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句