Сообщение об ошибке компилятора MIDL вводит в заблуждение.Когда вы компилируете следующий файл IDL
namespace NS
{
runtimeclass MyType
{
foo<UInt32> bar();
}
}
, вы получите это сообщение об ошибке:
error MIDL5023: [msg]the arguments to the parameterized interface are not valid [context]: foo
Однако это не аргумент, который является недействительным.Это параметризованный тип (foo
), который неизвестен.В вашем случае это winrt.Windows.Foundation.IAsyncOperation
.Тип с таким именем не существует.Вместо этого имя типа среды выполнения Windows - Windows.Foundation.IAsyncOperation
(которое проецируется в пространство имен winrt
в C ++ / WinRT, т.е. winrt::Windows::Foundation::IAsyncOperation
).
Чтобы устранить проблему, используйте следующий файл IDL:
//ConnectTask.idl
namespace NOVAShared
{
[default_interface]
runtimeclass ConnectTask
{
ConnectTask();
Windows.Foundation.IAsyncOperation<UInt32> RunAsync();
};
}
Обратите внимание, что если вам нужен статический член класса, вам придется использовать ключевое слово static
в IDL.