C++:将资源添加到项目模板

C++: Add resources to project template

目前我有一个 C++ 项目模板,其中包含一些预安装的图像,在代码中定义为字节数组。我想通过将图像移动到资源来重新组织项目,但问题是 .rc 脚本只接受图像的 absolute 路径,因此我不我不太明白如何正确地将它们用于项目模板。我想要的只是将图像文件放在项目目录中的某个位置,并在项目 .rc 脚本中使用 relative 路径引用它们以实现可移植性。有可能吗?

VS2019 社区 16.5.4 顺便说一句。

UPDATE1: 我需要在编译时包含我的资源,因此动态文件管理不是一个选项。 我有 .rc项目中的文件和其中的一些PNG图像。它们是使用 绝对 路径定义的,例如 IDB_PNG1 PNG "D:\absolute\path\to\file.png"。问题是我无法使用 相对于项目 的路径,例如 IDB_PNG1 PNG "\path\inside\project\file.png",我的资源在模板中的可移植性为零。

UPDATE2: 我发现的一种可能的解决方案是使用 CustomParameter element 并在 .rc 文件中写入路径,如 IDB_PNG1 PNG "$projectpath$\path\inside\project\file.png",然后设置 ReplaceParameters=True 用于 .vstemplate 中的 .rc 文件。但是只有 $projectname$ 默认参数,我什至不确定我是否可以为绝对路径做到这一点。

UPDATE3 (ANSWER): 感谢 this 问题,我发现有未记录的参数 $solutiondirectory$ (希望 MS 不会从未来版本)。所以我只是将我的资源写为 IDB_PNG1 PNG "$solutiondirectory$\$projectname$\path\inside\project\file.png" 然后这些路径在创建项目时由 Visual Studio 自动更新。问题已解决!

假设您在图标图像之类的上下文中使用 .rc 文件,这是可能的。您可以只使用标准库 link 到图像文件,然后逐字节读取它并将其加载到您之前使用的数组中。

如果这不是正确的上下文,您可以分享一些代码以便更好地理解。

感谢 this 问题,我发现有一个未记录的参数 $solutiondirectory$(希望 MS 不会在未来的版本中删除它)。所以我只是将我的资源写为 IDB_PNG1 PNG "$solutiondirectory$\$projectname$\path\inside\project\file.png" 然后这些路径在创建项目时由 Visual Studio 自动更新。问题已解决!