【问题标题】:c++ executable program testc++可执行程序测试
【发布时间】:2013-09-05 03:18:22
【问题描述】:

我一直在关注 C++ 游戏编程的一些教程。我是 C++ 的新手,我正在使用 Microsoft Visual C++ 2010 Express IDE。我正在创建一个游戏,当我通过 IDE 运行程序时,它会按预期显示草精灵。但是当我从 Release 文件夹运行 .exe 文件时,它会显示奇怪的图像。当我从调试文件夹运行 .exe 文件时,我得到一个灰屏。谁能告诉我为什么会这样?

【问题讨论】:

  • 如果没有更多细节,很难调试。考虑包含一些代码,也许还有关于您的设置的信息?不过祝你好运。
  • 假设您加载了一些资源,并且在所有三种情况下它们都将位于相对于可执行文件的不同目录中,除非您在调试器选项中更改了工作目录。如果我不得不猜测,它们在后两种情况下无法加载,并且您在程序中没有足够的错误检查来告诉您。

标签: c++ executable


【解决方案1】:

我猜测您的精灵图像作为数据文件保存在您的项目文件夹中。因此,我提出以下前提:

Visual Studio IDE 的默认运行位置是您正在执行的项目的 project 文件夹。也就是说,通常它从您的 .vcproj.vcprojx 文件所在的目录执行(通常是您的解决方案目录文件夹下的一个文件夹,您的 >.sln 文件被保留)。

如果您的项目在 IDE 中正确运行,但无法直接从发布文件夹运行,则很可能您依赖于项目数据文件(在您的情况下为图像),这些文件与项目中的源文件一起保存文件夹。从 Release 文件夹运行时,这些文件不再可见,因为您的 Release 文件夹是您的工作目录;不是项目文件夹。

有很多方法可以解决这个问题,每种方法都有自己的优点。几个选项是:

后期构建步骤

为您的项目执行构建后步骤,将您的数据文件与您的项目一起复制到$(TargetDir) 位置。然后,这些文件将在与您的可执行文件相同的目录中可见。

  • 好处:很简单。
  • 缺点:即使数据文件是“最新的”,如果单击“构建解决方案”,它将始终运行。

自定义构建目标

将您的数据文件添加到项目中并编写一个自定义构建脚本来执行相同的复制,但也会建立一个输出依赖文件。

  • 好处:几乎和 #1 一样简单,但有点乏味。
  • 缺点:您可能有很多数据文件,每个文件都需要自己的自定义构建步骤。 (注意:您可以多选项目中的所有数据文件,如果您对内置宏很有创意,您可以让它们都使用“相同”的构建规则和命令) .

嵌入式资源

将数据文件作为自定义资源添加到您的可执行文件中。

  • 好处:您的项目不再需要与可执行文件并行的数据文件,因为它们嵌入在 EXE 模块的资源表中。
  • 缺点:需要自定义代码才能从可执行文件的资源表而不是磁盘外动态加载自定义资源。这一点也不难,但需要额外的工作。

还有其他选择,但我希望这能给您一些想法。

【讨论】:

    【解决方案2】:

    我使用 VS2008 并尝试回答您的问题。右键单击项目并在弹出窗口底部选择属性,然后转到配置属性下的调试。你可以看到你运行的命令和你在 IDE 中传递的参数。我猜你错过了一些参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      相关资源
      最近更新 更多