我在Visual Studio 2013中使用Direct X 11制作了一个测试程序。它包含一个简单的精灵,根据计时器实现缓慢旋转。该程序使用F5或Ctrl-F5加载和运行良好,但是当我尝试打开实际创建的.exe文件(在我的\ Debug文件夹中)时,它只显示窗口然后立即关闭。
我读到的大多数答案都涉及从Visual Studio内部加载.exe。我也尝试了Release模式,但情况仍然相同。
我在Visual Studio 2013中使用Direct X 11制作了一个测试程序。它包含一个简单的精灵,根据计时器实现缓慢旋转。该程序使用F5或Ctrl-F5加载和运行良好,但是当我尝试打开实际创建的.exe文件(在我的\ Debug文件夹中)时,它只显示窗口然后立即关闭。
我读到的大多数答案都涉及从Visual Studio内部加载.exe。我也尝试了Release模式,但情况仍然相同。
Sprite文件存储在您的项目文件夹中。默认情况下,从Visual Studio IDE运行时会在执行的项目文件夹中运行。也就是说,通常它会在保存.vcproj或.vcprojx文件的目录中执行(这通常是您的解决方案目录文件夹的下一级文件夹)。
如果您的项目在IDE中正确运行,但直接从调试文件夹运行失败,那么很可能您依赖于与源文件一起存储在项目文件夹中的项目数据文件。当从Debug文件夹运行时,这些文件不再可见,因为Debug文件夹是您的工作目录,而不是项目文件夹。
有许多方法可以解决这个问题,每种方法都有其自身的优点。以下是几个选项:
后置生成步骤
为您的项目创建一个后置生成步骤,将您的数据文件复制到$(TargetDir)位置与您的项目一起。这些文件将出现在与可执行文件相同的目录中。
Benefit: Its easy.
Drawback: It will always run if you click "build solution" even if the data files are "up-to-date."
自定义构建目标
将您的数据文件添加到项目中,并编写一个自定义构建脚本,执行相同的复制操作,还要建立一个输出依赖文件。
Benefit: Almost as easy as #1, but a little more tedious.
Drawback: You may have a lot of data files and each will require its own custom build step. (Note: you can multi-select all the data files in your project, and if you're creative with the built-in macros you can have them all use the "same" build rules and commands).
嵌入式资源
将数据文件作为自定义资源添加到可执行文件中。
Benefit: Your project no longer requires data files side-by-side with the executable since they are embedded in the resource table of your EXE module.
Drawback: Custom code is required to dynamically load the custom resources from your executable's resource table rather than off-disk. It isn't difficult at all to do, but is additional work.
还有其他选项,但我希望这些能给你一些开始的思路。
$(TargetDir)
(例如目标二进制文件夹)。然后,在代码中,使用相对于您的二进制文件夹(\Debug
在您的情况下)的文件路径。例如:../resources/sprite.jpg
而不是 sprite.jpg
。(..
将目录树向上移动一级,因此 sprite.jpg
将始终在二进制文件夹上一级的 resources
文件夹中搜索)。这难道不是最简单和“正确”的做法吗?=)@Imran Rizvi 您能否将此选项添加到您的答案中? - Ivan Aksamentov - Drop