c - 我应该链接哪个库才能获得 WinRT "EXTERN_C const IID IID___x_ABI_*"的正确定义

标签 c windows-runtime

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 定义吗?我尝试使用在 windows.gaming.input.h header 中声明的 IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics ,但随后出现错误 LNK2001:无法解析的外部符号 IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics。 我应该链接哪个库才能正确定义 IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics

最佳答案

这似乎不包含在 SDK 中。

通常,这来自像 uuid.lib 这样的库。但是,我没有看到任何证据表明 Windows.Gaming(或我抽查过的其他 winrt 类型)的 IID 在 Windows SDK 的任何库中以这种方式提供。 winrt 类型支持 C 用法,但使用很少。

明天回到办公室时,我会打开一个错误来跟踪此情况。目前,您唯一的选择是在代码中定义 GUID,就像您在此处所做的那样。

本·库恩 (MSFT)

关于c - 我应该链接哪个库才能获得 WinRT "EXTERN_C const IID IID___x_ABI_*"的正确定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55573362/

相关文章:

c - 使用 POSIX 信号量的可重用屏障实现

指针和整数之间的比较[默认启用]

c++ - 合理的压缩 block 大小

c# - Windows 8 中应用程序的源代码

c# - 是否有可能从 Windows 8 商店应用程序 (C#) 启动另一个应用程序或程序

c - 如何在 "No such file or directory"错误后停止 make(在 makefile 中)?

c - 我无法为更大的矩阵分配内存,然后〜200x200 Lapack Visual Studio in C 这是我的代码

reflection - WinRT 反射 (C++/CX)

c++ - 如何使用 WRL 返回内置的 winrt 组件?

c# - 使用 C# 在 XAML 中更改按钮的图像