c++ - 在 C++ 中获取 Xcode 项目的资源

标签 c++ xcode resources path sfml

我正在 Xcode 中使用 SFML 编写一个简单的游戏。我有一个要在 Sprite 中使用的 block 的 .png。目前,我必须在下面的代码片段中输入图像的完整路径:

 sf::Image blockImage;

 if (!blockImage.LoadFromFile("/Users/me/Development/Tetris/images/block.png")) {
  cerr << "Could not load block image." << endl;
  App.Close();
 }

我宁愿不必像这样对游戏中每个图像的位置进行硬编码。我知道 Xcode 项目可以有“资源”,但我以前从未使用过它,而且从我能够通过谷歌搜索到的内容来看,它只对使用 Apple 框架的项目很重要。我可以将我的图像添加为资源吗?我如何实际获取它的位置并在我的代码中使用它?

谢谢!

最佳答案

你的问题不是很清楚,但我会尽力解释:

对于操作系统而言,Resources只是应用程序包中的一个文件夹,唯一特别的是当应用程序启动时,Resources文件夹是默认的文件路径(称为工作目录)。

这意味着如果您的应用程序资源文件中有图像,您可以加载它:

blockImage.LoadFromFile("/Developer/MyApp/build/Development/Tetris.app/Contents/Resources/block.png");

blockImage.LoadFromFile("block.png");

当你使用这个调用时,操作系统会检查 block.png 是否在你的硬盘驱动器的根目录中,但没有找到它然后检查工作目录*

如果要改变工作目录,可以使用通用的unix函数

chdir(const char *path);

Mac OS X 中包含的内容来自:

#include <unistd.h>

Arjit 指的是 Xcode 中的一个方便功能,您可以在任何给定目标中复制文件的构建阶段,并将文件甚至文件夹复制到应用程序的 Resources 文件夹中。

希望这能解决问题!

*它实际上可能首先检查工作目录,不确定。

关于c++ - 在 C++ 中获取 Xcode 项目的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3433185/

相关文章:

c++ - 是什么导致来自 WinHttpSendRequest 的间歇性 SEC_E_BUFFER_TOO_SMALL 错误?

c++ - 引用资料 |大数据意外崩溃

ios - 错误 : module file's minimum deployment target is ios8. 3 v8.3

java - 如何从 NetBeans 中的 'Resources' 文件夹中正确获取图像

c++ - 堆栈溢出 : Duplicate temporary allocation in stack space?

c++ - §1.3.7 (N4140) 中是否缺少 `polymorphic` 一词?

ios - 什么时候在 Objective-C 中删除 BOOL 属性?

iphone - 在 Xcode 中调暗 iPhone 5 手电筒应用程序的 LED

jquery-ui - Grails 使用资源插件将参数传递给模块

java - 如何从资源文件创建自动生成的枚举?