我正在研究一些C ++代码,它主要为另外两个共享它的项目提供一个类,但也包含一个小程序,以便在需要时可以从命令行使用它。该类必须加载一些资源,这些资源写入资源文件夹中的多个文件。这些文件的路径当然是硬编码到程序中,因为我不希望任何使用该类的客户端担心加载这些资源,而不是调用init方法。当我自己编译项目时,使用硬编码的fopen("resources/myresource.dat")
它按预期工作,但当它包含在另一个项目中时,整个事情通常放在一个单独的子目录中,只包含标题{{1 }}。在这种情况下,硬编码路径无效,因为工作目录是一个更高的文件夹。
如何确保资源文件夹的路径始终有效,无论包含的路径是什么?
答案 0 :(得分:4)
如何确保资源文件夹的路径始终有效,无论包含的路径是什么?
它与包含的路径无关。
您实际需要的是一个安装例程,它为您提供了一个环境变量,如$MYAPP_RESOURCE_PATH
,并且扩展而不是您的硬编码路径"resources/myresource.dat"
。
您可以使用getenv()
函数检索环境变量的值。