使用MSIX Packaging Project打包C++ UWP应用遇头文件缺失错误求助
问题描述
使用Visual Studio的MSIX Packaging Project打包C++ UWP应用时,发布阶段出现编译错误:
编译命令:
CL.exe /c /I"Debug\Generated Files\\" /ZI /JMC /nologo /W3 /WX- /diagnostics:column /sdl /Od /Oy- /D USE_IMPORT_EXPORT /D NOMINMAX /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /std:c++20 /permissive- /Yu"stdafx.h" /Fp"Debug\QMirrorCore.pch" /Fo"Debug\\" /Fd"Debug\vc143.pdb" /external:W3 /Gd /TP /analyze- /FC /errorReport:queue /bigobj ProviderS3.cpp
错误信息:
Cannot open include file: 'aws/core/Aws.h': No such file or directory Cannot open include file: 'nlohmann/json.hpp': No such file or directory
已在C++ UWP应用项目中配置这些头文件的包含目录,Debug和Release模式下应用本身可正常编译;添加JSON、AWS等外部库前,MSIX打包流程正常。但找不到在MSIX Packaging Project中配置包含目录的入口,原以为依赖项目的包含目录会自动继承。
解决办法
检查依赖引用方式
确保MSIX Packaging Project通过项目引用关联你的C++ UWP应用项目:右键MSIX项目 → 选择"添加" → "项目引用",勾选目标UWP应用项目,这样打包时会自动继承应用项目的编译配置(包括包含目录)。同步依赖配置
若已添加项目引用仍报错,右键MSIX项目 → "卸载项目",再右键选择"重新加载项目",触发Visual Studio重新同步依赖项目的配置信息。手动添加包含目录
上述方法无效时,可修改MSIX项目的.wapproj文件手动配置:- 右键MSIX项目 → "卸载项目"。
- 右键卸载后的项目 → "编辑项目文件"。
- 在
<PropertyGroup>节点中添加(替换为你的实际路径):<AdditionalIncludeDirectories>$(SolutionDir)path\to\aws\include;$(SolutionDir)path\to\nlohmann\include;$(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - 保存文件后重新加载项目,再尝试打包。
确认外部库部署配置
检查AWS、nlohmann等外部库的部署配置:在UWP应用项目的"属性" → "VC++目录"中确认包含目录和库目录在所有编译模式下一致;在"链接器" → "输入"中确认库文件已正确引用。
内容的提问来源于stack exchange,提问作者Dustin
相关产品推荐
相关产品推荐

