首页 > 解决方案 > C++:将资源添加到项目模板

问题描述

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

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 元素并在 .rc 文件中写入路径IDB_PNG1 PNG "$projectpath$\\path\\inside\\project\\file.png",然后ReplaceParameters=True在 .vstemplate 中为 .rc 文件设置。但是只有$projectname$默认参数,我什至不确定我是否可以为绝对路径做到这一点。

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

标签: c++visual-studiotemplatesresourcesproject

解决方案


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


推荐阅读