Win32-DLL转UWP-DLL编译报错求助(VS2017/Win10)
解决UWP DLL编译时的PRI资源错误
咱们直接说问题核心和解决办法——你遇到的是UWP资源索引器(PRI工具)的路径限制问题,先理清楚根源再动手:
错误本质
你看到的PRI261: 0xdef00523是关键错误:UWP的PRI工具不允许直接引用项目根目录以外的普通资源文件(仅支持引用打包好的资源容器),而你在layout.resfiles里指定的路径Files\CRenderer\..\..\..\Products\CRenderer\CRenderer\CompiledShaders\GS_GenerateNormals.cso通过多个../跳出了项目根目录,直接触发了这个限制。至于PRI175,只是路径错误导致资源处理失败的连锁反应,解决PRI261后它会自动消失。
具体解决方法
方法1:把着色器文件夹移到项目根目录内(最直接)
- 把存放
.cso的CompiledShaders文件夹,复制或移动到你的UWP DLL项目根目录下(和.vcxproj文件同层级) - 修改
layout.resfiles里的路径,改成相对项目根的路径,比如调整为Files\CRenderer\CompiledShaders\GS_GenerateNormals.cso(根据你的实际目录结构微调) - 在Visual Studio里把这些
.cso文件添加到项目中,选中文件后在属性面板设置内容为是,确保PRI工具能识别它们作为项目资源。
方法2:添加外部文件为项目链接(保留原位置)
如果不想移动文件夹,可以用链接方式让PRI工具把外部文件当作项目内资源处理:
- 在VS项目右键菜单选择添加 -> 现有项,找到外部
CompiledShaders里的.cso文件 - 点击"添加"按钮旁边的下拉箭头,选择添加为链接
- 选中这些链接文件,在属性面板设置:
- 内容:
是 - 复制到输出目录:
如果较新则复制
- 内容:
- 修改
layout.resfiles里的路径,改为项目内链接文件的相对路径(比如如果链接文件放在项目的CompiledShaders虚拟文件夹下,路径就写CompiledShaders\GS_GenerateNormals.cso)
方法3:进阶配置PRI工具识别外部资源容器(不推荐)
如果必须引用外部目录,需要把外部的CompiledShaders标记为资源容器,但这需要修改PRI生成的配置脚本,步骤复杂且容易出问题,一般前两种方法足够解决你的问题。
内容的提问来源于stack exchange,提问作者xest
相关产品推荐
相关产品推荐

