0

我在 Xcode 5 中编写一个小 C++ 程序是为了好玩,但这是我第一次使用 Xcode,我对打开项目中包含的文件时 Xcode 如何处理路径感到困惑。我正在使用 SDL2_image 框架,当我想加载包含在项目中的图像时,我只是这样做,它发现图像很好:

IMG_LoadTexture(renderer, "image_name.png");

但是,这似乎在其他任何地方都不起作用。我正在尝试使用 libxml2 加载一个 xml 文件,但是这段代码:

xmlDocPtr doc = xmlParseFile("doc_name.xml");

结果是这样的:

I/O warning : failed to load external entity "doc_name.xml"

当我尝试其他加载文件的方法时,也会发生类似的事情。我不确定这是因为 SDL2_Image 框架正在做一些特别的事情,还是因为我对事情的工作方式有一些其他的基本误解。所有文件都应该以相同的方式包含在内,我只需右键单击项目并选择“将文件添加到...”。编译后,它们会显示在应用程序的“内容/资源”文件夹中。我在stackoverflow上看到了其他关于如何打开包中文件的问题(我假设是内容文件夹?),但我很困惑为什么我不必做这些答案建议的任何事情来使它工作与 SDL_Image 的东西。

我将不胜感激任何帮助。到目前为止,我已经用我不理解的来自互联网的神奇构建设置解决了我的所有问题,所以任何解释都表明我如何为自己解决这个问题,以便下次我可以非常感激。

[更新] 如果我使用路径“Application_Name.app/Contents/Resources/file_name”,我可以访问该文件。但是我不明白为什么我必须对除了 SDL2_Image 库之外的所有内容都执行此操作,并且我不希望我的路径依赖于应用程序的名称。

4

1 回答 1

1

选项 1)我认为这里的问题不在于 C++ 代码,而在于文件位置。在 XCode 中,二进制程序构建在 Executables 文件位置。您必须设置构建阶段以通过“复制捆绑资源”将输入文件复制到可执行文件位置。请参阅Apple 的文档

选项 2) 或者,您可以使用硬编码路径并创建一个在 bash 中快速完成的安装程序,并且可以在每个阶段在 XCode 方案编辑器中轻松实现脚本运行。

选项 3) 像这样使用 CoreFoundation 和编译器宏:Relative Paths Not Working in Xcode C++

于 2013-12-01T17:11:04.823 回答