添加C++ DLL至WinRT组件并在UWP中使用时出现模块未找到错误
WinRT组件运行时类访问问题排查方案
核心检查项
WinRT组件项目配置
- 确认C++库以**动态链接库(DLL)**形式链接,静态库易导致运行时依赖缺失
- 检查组件项目输出类型必须为
Windows Runtime Component,而非普通C++ DLL - 验证运行时类声明:需标记
winrt::Windows::Foundation::Metadata::ApiContract等合规属性,命名空间符合WinRT规范
UWP项目引用配置
- 直接添加WinRT组件项目引用(右键UWP项目→添加→引用→选择目标组件),不要仅手动添加
.winmd文件,让VS自动处理依赖传递 - 确保UWP项目与WinRT组件的目标Windows版本完全一致,版本不匹配会导致类无法识别
- 直接添加WinRT组件项目引用(右键UWP项目→添加→引用→选择目标组件),不要仅手动添加
编译与部署验证
- 清理所有项目的
bin、obj目录后,按C++库→WinRT组件→UWP项目的顺序重新生成,避免旧编译文件干扰 - 检查WinRT组件输出目录:确认
.winmd、.dll、.pri文件均生成,且UWP项目输出目录已自动复制这些文件
- 清理所有项目的
代码层面检查
- UWP中访问类时,必须正确引入组件的命名空间(如
using namespace YourWinRTNamespace;),或使用完整命名空间路径调用 - 确保WinRT组件暴露的公共接口仅使用WinRT兼容类型,禁止原生C++指针、未封装STL容器等非合规类型作为参数/返回值
- UWP中访问类时,必须正确引入组件的命名空间(如
内容的提问来源于stack exchange,提问作者pavan kumar
相关产品推荐
相关产品推荐

