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

Win32程序调用MddBootstrapInitialize2报错,求Windows App SDK磨砂玻璃解决方案

问题:Win32程序引入Windows App SDK初始化失败

为给Win32窗口添加磨砂玻璃效果,我使用Windows App SDK开发,运行代码时出现初始化错误。

代码示例

#include <Windows.h>
#include <MddBootstrap.h>
#include <tchar.h>
#include <winrt/Windows.System.h>
#include <DispatcherQueue.h>
#include <WindowsAppSDK-VersionInfo.h>

LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI wWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR pszCmdLine,
    _In_ int iCmdShow)
{
    HRESULT hr = CoInitialize(NULL);

    winrt::init_apartment(winrt::apartment_type::single_threaded);

    const PACKAGE_VERSION minVersion{};
    hr = MddBootstrapInitialize2(
        Microsoft::WindowsAppSDK::Release::MajorMinor,
        Microsoft::WindowsAppSDK::Release::VersionTag,
        minVersion,
        MddBootstrapInitializeOptions_OnNoMatch_ShowUI
    );

    return 0;
}

错误信息

(caller: 00007FF88D149DC0) LogHr(1) tid(4784) 80040010 The object is not in any state of in situ activityMsg:[Bootstrap.Intitialize: Scanning packages for Major.Minor=1.0, Tag=, MinVersion=0.0.0.0] CallContext:[\Initialize]

WinRT originate error - 0x80670016 : 'Unable to resolve package dependency conditions. \u000d\u000a'。

已安装的NuGet包

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Windows.CppWinRT" version="2.0.240405.15" targetFramework="native" />
  <package id="Microsoft.Windows.SDK.BuildTools" version="10.0.26100.1" targetFramework="native" />
  <package id="Microsoft.WindowsAppSDK" version="1.5.240627000" targetFramework="native" />
</packages>

已尝试将majorMinorVersion修改为0x0001000,错误依旧。


解决方案

1. 匹配Windows App SDK运行时版本

你安装的是1.5版本的NuGet包,必须确保系统已安装对应版本的Windows App SDK运行时:

  • 下载对应1.5版本的运行时安装包,执行完整安装(包含框架包和主运行时)。

2. 修正初始化版本参数

代码中Microsoft::WindowsAppSDK::Release::MajorMinor对应1.0版本,与NuGet包的1.5版本不匹配,导致扫描失败。可直接使用NuGet包提供的版本宏:

hr = MddBootstrapInitialize2(
    WINDOWSAPPSDK_RELEASE_MAJORMINOR,
    WINDOWSAPPSDK_RELEASE_VERSION_TAG_W,
    minVersion,
    MddBootstrapInitializeOptions_OnNoMatch_ShowUI
);

或者手动指定1.5版本的MajorMinor值:0x00010005(计算方式:1<<16 | 5)。

3. 调整初始化顺序

winrt::init_apartment会自动处理COM初始化,移除手动调用的CoInitialize(NULL),避免冲突。

4. 检查项目配置

  • 确保项目平台工具集为v143及以上,Windows目标版本不低于Windows 10 1809(10.0.17763.0)。
  • 确认VC++目录中已正确引入NuGet包的包含目录和库目录。
  • 链接器输入中添加Microsoft.WindowsAppSDK.Bootstrap.lib。

5. 修复包依赖

  • 卸载并重新安装所有相关NuGet包,清除项目的packages缓存目录。
  • 进入项目目录,执行msbuild /t:Restore重新还原依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:05:16