我应该 link 使用哪个库来正确定义 WinRT "EXTERN_C const IID IID___x_ABI_*"
What library should I link to get proper definition of WinRT's "EXTERN_C const IID IID___x_ABI_*"
Here 是一些 原始 C[=26=] 代码使用 windows.gaming.input.h
API:
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
,但后来我有 error LNK2001: unresolved external symbol IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics
。
我应该 link 哪个库来正确定义 IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics
?
这似乎不包含在 SDK 中。
通常,这将来自像 uuid.lib 这样的库。但是,我没有看到任何证据表明 Windows.Gaming(或我抽查过的其他 winrt 类型)的 IID 在 Windows SDK 的任何库中都是以这种方式提供的。 winrt 类型支持 C 用法,但很少使用。
明天回到办公室后,我会打开一个 bug 来跟踪这个。现在,您唯一的选择是像您在此处所做的那样在代码中定义 GUID。
本·库恩 (MSFT)
Here 是一些 原始 C[=26=] 代码使用 windows.gaming.input.h
API:
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
,但后来我有 error LNK2001: unresolved external symbol IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics
。
我应该 link 哪个库来正确定义 IID___x_ABI_CWindows_CGaming_CInput_CIGamepadStatics
?
这似乎不包含在 SDK 中。
通常,这将来自像 uuid.lib 这样的库。但是,我没有看到任何证据表明 Windows.Gaming(或我抽查过的其他 winrt 类型)的 IID 在 Windows SDK 的任何库中都是以这种方式提供的。 winrt 类型支持 C 用法,但很少使用。
明天回到办公室后,我会打开一个 bug 来跟踪这个。现在,您唯一的选择是像您在此处所做的那样在代码中定义 GUID。
本·库恩 (MSFT)