You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在DLL中使用WebView2?编译报错求助

解决MFC DLL集成WebView2的编译错误

1. 修复WIL库的C2440编译错误

  • 不要直接修改WINAPI_FAMILY为WINAPI_PARTITION_DESKTOP,这会破坏DLL的兼容性,引发后续IDComposition相关未定义问题。
  • 正确方案:打开项目属性,依次进入C/C++ -> 预处理器 -> 预处理器定义,添加WIL_ENABLE_RESOURCE_WRAPPERS=0。这个定义会禁用WIL中导致类型不匹配的资源包装特化,直接解决C2440错误。

2. 解决IDCompositionDevice未定义问题

  • 确保项目链接正确的Windows SDK库:
    1. 进入项目属性的链接器 -> 输入 -> 附加依赖项,添加dcomp.lib。
    2. 在C/C++ -> 常规 -> 附加包含目录中,确认已包含Windows SDK的um目录(默认路径为$(WindowsSdkDir)Include\$(WindowsSDKVersion)\um,若缺失手动添加)。
  • 在代码开头显式引入头文件:
    #include <dcomp.h>
    
  • 预处理器定义中添加_WIN32_WINNT=0x0A00(WebView2要求Windows 10及以上版本,该定义指定目标系统为Win10)。

3. MFC DLL集成WebView2的额外注意事项

  • 原WinMain需替换为DLL入口函数DllMain,且不要在DllMain中直接初始化WebView2——建议由调用方触发初始化逻辑,避免DLL加载时的线程安全问题。
  • 确认NuGet包版本匹配:Microsoft.Web.WebView2和Microsoft.Windows.ImplementationLibrary(WIL)的版本需兼容,优先使用WebView2官方文档推荐的WIL版本。
  • 若使用MFC扩展DLL,项目设置中MFC的使用需设为“在共享DLL中使用MFC”,避免静态MFC与WebView2的依赖冲突。

内容的提问来源于stack exchange,提问作者mark_in_tex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:37:18