C 我应该链接什么库来获得WinRT'的正确定义;s";外部常数IID IID;

C 我应该链接什么库来获得WinRT'的正确定义;s";外部常数IID IID;,c,windows-runtime,C,Windows Runtime,是使用windows.gaming.input.hAPI的一些原始C代码: HSTRING gamepadClassName; if (FAILED(WindowsCreateString(RuntimeClass_Windows_Gaming_Input_Gamepad, HbArrayLength(RuntimeClass_Windows_Gaming_Input_Gamepad) - 1, &gamepadClassName))) {

是使用
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);
有没有办法摆脱代码中的这个GUID定义?我试图使用
windows.gaming.input.h
标题中声明的
IID\uuuuuux\u ABI\u CWindows\u CGaming\u CIGamepadStatics
,但随后出现
错误LNK2001:未解析的外部符号IID\uuuuuuuux\u ABI\u CWindows\u CGaming\u CInput\u CIGamepadStatics

我应该链接什么库来正确定义
IID\uuuuu x\u ABI\u CWindows\u CGaming\u CInput\u CIGamepadStatics

SDK中似乎没有包含此库

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

当我明天回到办公室时,我会打开一个bug来跟踪这个。现在,您唯一的选择是在代码中定义GUID,就像您在这里所做的那样


Ben Kuhn(MSFT)

是的,我已经尝试链接uuid.lib和OneCore.lib,OneCoreUap.lib。没人帮忙。谢谢你的回答。如果您对此有任何更新,请与我保持联系。我现在可以明确确认SDK中没有提供这些更新。有极少数C用户使用winrt类型,您正在做的工作是推荐的方法。我在团队的待办事项中注意到了这一遗漏,但我不能承诺任何时间。如果您需要更多,可以在这里对xlang项目中的ABI编写器进行黑客攻击,以从winmd文件生成完整的定义集:。如果我们有时间将这些添加到工具包中,我们可能也会从这里开始。