我应该链接什么库来获得WinRT的“EXTERN_C const IID IID ___ x_ABI_ *”的正确定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该链接什么库来获得WinRT的“EXTERN_C const IID IID ___ x_ABI_ *”的正确定义相关的知识,希望对你有一定的参考价值。

Here是一些使用windows.gaming.input.h API的原始C代码:

    HSTRING gamepadClassName;
    if (FAILED(WindowsCreateString(RuntimeClass_Windows_Gaming_Input_Gamepad,
            HbArrayLength(RuntimeClass_Windows_Gaming_Input_Gamepad) - 1, &gamepadClassName))) {
        Error("Failed to create a WinRT string reference for Windows.Gaming.Input.Gamepad class name.");
    }
    static IID const gamepadStaticsInterfaceID = { 0x8BBCE529, 0xD49C, 0x39E9, { 0x95, 0x60, 0xE4, 0x7D, 0xDE, 0x96, 0xB7, 0xC8 } };
    if (FAILED(RoGetActivationFactory(gamepadClassName, &gamepadStaticsInterfaceID, &HbInputi_Windows_Gamepad_Statics))) {
        Error("Failed to get the IGamepadStatics activation factory for Windows.Gaming.Input.Gamepad.");
    }
    WindowsDeleteString(gamepadClassName);

有没有办法在代码中摆脱这个gamepadStaticsInterfaceID GUID定义?我试图使用在IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics标题中声明的windows.gaming.input.h然后然后我有error LNK2001: unresolved external symbol IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics。我应该链接哪些lib来正确定义IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics

答案

这似乎未包含在SDK中。

通常,这将来自像uuid.lib这样的lib。但是,我没有看到任何证据表明在Windows SDK中的任何库中以这种方式提供了Windows.Gaming(或我已经发现的其他winrt类型)的IID。 win类型支持C使用,但使用非常简单。

当我明天回到办公室时,我会打开一个错误来追踪这个。目前,您唯一的选择是在您的代码中定义GUID。

本库恩(MSFT)

以上是关于我应该链接什么库来获得WinRT的“EXTERN_C const IID IID ___ x_ABI_ *”的正确定义的主要内容,如果未能解决你的问题,请参考以下文章

什么是winRT中的联系合同?

为什么我们需要单独的库来进行静态和动态链接?

在 WinRT 中绘制二叉树

在winrt中打印多个文档[关闭]

与WinRT组件进行操作

如何在“native c ++”环境中使用WinRT IAsyncOperation *对象