可以使用不同目录中的图像执行

时间:2012-02-14 23:36:27

标签: c++ image exe

我有以下目录结构

       (root)
  /      |        \
bin    resources  src
|        |         |
Debug  dot.bmp   .cpp
|
.exe

我希望.exe文件使用dot.bmp。

这是加载dot.bmp <。p>的.cpp文件中的代码

player_img = il->load_image( "dot.bmp" );

我觉得我需要修改这行代码,但是在将其更改为:

之后

player_img = il->load_image( "../resources/dot.bmp" );

我仍然收到错误消息,说无法加载图片。

我需要改变什么?这是否可能,或者我应该放弃并将图像放在与.exe相同的目录中?

1 个答案:

答案 0 :(得分:1)

你需要进一步下去才能到达根目录。

../../resources/dot.bmp

您的可执行文件位于bin/Debug但我认为您是在假设它位于bin的情况下编码的。

假设您在Windows上,相对路径将相对于当前工作目录而不是可执行文件所在的目录。通常它们是相同的,但不一定。

我倾向于使用完全限定的路径并预先挂起可执行文件所在的目录。您可以通过调用GetModuleFileNameNULL作为hModule参数来获取此信息。这将返回可执行文件的完整路径,因此您需要删除文件名部分。

您还需要考虑部署。此结构看起来像您的开发结构,但在部署程序时可能需要不同的组织。例如,我希望可执行文件在部署时存在于bin目录中。

最后一个想法。假设您的程序需要的图像在编译时是已知的,那么将它们作为资源链接到可执行文件会更容易。这样你根本不必担心这些问题,而且可执行文件可以独立存在。