【问题标题】:Why wont SFML Xcode load my .png file using C++?为什么 SFML Xcode 不能使用 C++ 加载我的 .png 文件?
【发布时间】:2020-01-16 19:52:13
【问题描述】:

在终于能够让 SFML 在 Xcode 上工作后,我遇到了另一个问题,说我的 .png 文件无法加载。

019-09-15 19:45:01.816739-0400 SFML Proj.[32379:2744427] MessageTracer: load_domain_whitelist_search_tree:73: Search tree file's format version number (0) is not supported
2019-09-15 19:45:01.816896-0400 SFML Proj.[32379:2744427] MessageTracer: Falling back to default whitelist
Failed to load image "res/img/mario.png". Reason: Unable to open file
Program ended with exit code: 9

这是我为纹理文件路径输入的内容:

sf::Texture texture;
texture.loadFromFile("res/img/mario.png");

有人可以帮帮我吗?

【问题讨论】:

  • 您有“复制捆绑资源”构建阶段吗?
  • 我的猜测是图像没有被复制到包中,如果是,你使用了错误的路径
  • 如果我没记错的话,你必须使用Objective-C来获取资源文件夹的路径
  • 查看this tutorial 中的ResourcePath.hppResourcePath.mm 文件。下载这两个文件并将它们嵌入到您的项目中。
  • 将镜像添加到构建阶段后,您应该可以做到这一点texture.loadFromFile(resourcePath() + “mario.png”);

标签: c++ xcode sfml


【解决方案1】:

在项目设置中,在构建阶段选项卡下,创建一个新的“复制捆绑资源”构建阶段(如果还没有的话)。构建阶段是在构建包时发生的事情。 “复制捆绑资源”将文件复制到捆绑的Resources 文件夹中。

ResourcePath.hppResourcePath.mm 复制到您的项目中。 resourcePath() 函数返回包中资源文件夹的路径。

sf::Texture texture;
texture.loadFromFile(resourcePath() + "mario.png");

要验证文件是否在捆绑包中,请找到捆绑包...

然后打开捆绑包...

有关详细信息,请参阅the tutorial

【讨论】:

  • 很好的答案,但是如果你无法加载主包,你应该抛出一个异常,而不是温顺地写一个日志消息,因为世界如果有效地结束了那个游戏。
  • 感谢您的帮助...我知道您已经有一段时间没有回答这个问题了,但我仍然不完全明白您在解释什么。我去了一个技术营,它真的没有教我所有这些背景知识是什么,所以很抱歉我不明白。当您说将 .hpp 和 .mm 文件复制到我的项目中时,您的意思是在构建阶段将它们添加到 Copy Bundle Resources 中吗?并且没有显示包内容的选项,因为 products 下的文件似乎是一个带有 exec 预览的文件,而不是 .app 文件。很抱歉打扰您!
  • @DavidMorse .hpp 和 .mm 文件是源文件,而不是资产。只需将它们拖到 main.cpp 和其他旁边的项目中即可。听起来您的目标是命令行工具而不是 Cocoa 应用程序。您是否使用 SFML Xcode 项目模板(也可在我链接的教程中找到)?如果您想要一个带有资产(图像、声音、字体等)的项目,那么最好的选择是切换到 Cocoa App 目标。否则,您可以按照“Windows 方式”执行操作,并将所有资产放在可执行文件旁边的文件夹中。
  • @DavidMorse 要切换到 Cocoa 应用程序,只需创建一个新项目并选择“应用程序”(如果您正在使用项目模板,则选择“SFML 应用程序”)。然后把所有的东西都复制过来。如果您需要我更具体,我可以更新我的答案。
  • 感谢您的帮助。我终于能够让模板工作,并选择了 SFML 应用程序模板。当我尝试运行它时,它会出现一个错误:“Command PhaseScriptExecution failed with nonzero exit code” 当我单击它时:它在所有问题部分中显示:drive.google.com/file/d/1SA67Tnd7Wa6omAerR3bWoDFH2zu7oWEU/… 我也没有框架文件夹,如屏幕截图所示。很抱歉在你回答后回答了一段时间 - 如果我有任何额外的时间,我只能这样做。如果我能做到这一点,那么我终于可以创造出一些有趣的东西了!
猜你喜欢
  • 2019-02-08
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多