相对于cpp的路径不是工作目录

时间:2016-02-14 17:28:36

标签: c++ path

我正在研究一些C ++代码,它主要为另外两个共享它的项目提供一个类,但也包含一个小程序,以便在需要时可以从命令行使用它。该类必须加载一些资源,这些资源写入资源文件夹中的多个文件。这些文件的路径当然是硬编码到程序中,因为我不希望任何使用该类的客户端担心加载这些资源,而不是调用init方法。当我自己编译项目时,使用硬编码的fopen("resources/myresource.dat")它按预期工作,但当它包含在另一个项目中时,整个事情通常放在一个单独的子目录中,只包含标题{{1 }}。在这种情况下,硬编码路径无效,因为工作目录是一个更高的文件夹。

如何确保资源文件夹的路径始终有效,无论包含的路径是什么?

1 个答案:

答案 0 :(得分:4)

  

如何确保资源文件夹的路径始终有效,无论包含的路径是什么?

它与包含的路径无关。

您实际需要的是一个安装例程,它为您提供了一个环境变量,如$MYAPP_RESOURCE_PATH,并且扩展而不是您的硬编码路径"resources/myresource.dat"

您可以使用getenv()函数检索环境变量的值。