【发布时间】:2016-10-26 16:10:31
【问题描述】:
在 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),但这也不起作用。
【问题讨论】:
-
当前目录在使用 Xcode 和在 Finder 中显式更改时可能不同。
-
@BoPersson 我不确定我是否理解,你能解释一下当前目录是什么意思吗?澄清一下,我不会将 .app 文件移动到另一个文件夹,然后双击它,我将进入 xcode 在我点击运行时创建的文件夹,然后单击它刚刚创建的 .app。还是您说“当前目录”是我需要在某处更改的设置?
-
最终通过在文件上放置一个绝对路径来运行它(我继续并假设 .app 文件在 /Applications 中),如下所示:stackoverflow.com/questions/26161144/… 但是,id 仍然想知道如何以更稳定的方式做到这一点,即不假设 .app 位于计算机上的特定位置。如果有人知道,很想知道如何。谢谢
-
我就是这个意思。相对路径是相对于某个“当前目录”的,它不一定是程序所在的位置。当您单击 i Finder 中的文件夹时,您会更改当前目录。 Xcode 可能会将其更改为其他内容,例如项目目录。
标签: c++ xcode macos build .app