包含Windows标头时很难解决循环依赖问题

时间:2018-09-01 23:48:14

标签: c++ circular-dependency c++-winrt

我不熟悉使用COM接口,尤其是想在cppWinRT应用程序中调用一种方法:

ICompositionGraphicsDeviceInterop::GetRenderingDevice()

我遇到的第一个问题是,当我尝试将#include <windows.ui.composition.interop.h>添加到我的pch.h中时,这似乎是一个循环依赖问题,当前看起来像这样:

#pragma once

#include <windows.h>
#include <unknwn.h>
#include <restrictederrorinfo.h>
#include <hstring.h>

#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.ApplicationModel.Activation.h"
#include "winrt/Windows.UI.Xaml.h"
#include "winrt/Windows.UI.Xaml.Controls.h"
#include "winrt/Windows.UI.Xaml.Controls.Primitives.h"
#include "winrt/Windows.UI.Xaml.Data.h"
#include "winrt/Windows.UI.Xaml.Markup.h"
#include "winrt/Windows.UI.Xaml.Navigation.h"
#include <winrt/Windows.UI.ViewManagement.h>

#include "winrt/Windows.ApplicationModel.Core.h"
#include "winrt/Windows.UI.Core.h"
#include <windows.ui.composition.interop.h>

我收到以下编译器错误:

  

c:\ program files(x86)\ windows kits \ 10 \ include \ 10.0.17744.0 \ winrt \ windows.ui.composition.interop.h(100):错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int

我试图找出导致问题的类型,但是我无法找出windows.ui.composition.interop.h第100行中的哪一个是有问题的。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

第100行有一个宏,要求我包含“ combaseapi.h”。