我有以下目录结构
(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相同的目录中?
答案 0 :(得分:1)
你需要进一步下去才能到达根目录。
../../resources/dot.bmp
您的可执行文件位于bin/Debug
但我认为您是在假设它位于bin
的情况下编码的。
假设您在Windows上,相对路径将相对于当前工作目录而不是可执行文件所在的目录。通常它们是相同的,但不一定。
我倾向于使用完全限定的路径并预先挂起可执行文件所在的目录。您可以通过调用GetModuleFileName
将NULL
作为hModule
参数来获取此信息。这将返回可执行文件的完整路径,因此您需要删除文件名部分。
您还需要考虑部署。此结构看起来像您的开发结构,但在部署程序时可能需要不同的组织。例如,我希望可执行文件在部署时存在于bin
目录中。
最后一个想法。假设您的程序需要的图像在编译时是已知的,那么将它们作为资源链接到可执行文件会更容易。这样你根本不必担心这些问题,而且可执行文件可以独立存在。