Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
MIDLRT también se conoce como MIDL 2.0. Consulte MIDL 1.0, 2.0 y 3.0.
MIDL 3.0 puede coexistir en el mismo archivo de código fuente con MIDLRT clásico; No es necesario convertir el archivo IDL a la vez. No se requiere ninguna nueva opción del compilador para expresar que usa MIDL 3.0. La opción /winrt existente habilita midlrt clásico y MIDL 3.0.
Puede agregar contenido midl 3.0 a un tipo MIDLRT existente. En concreto, puede usar MIDL 3.0 para definir interfaces que se agregan a las definiciones de clase en tiempo de ejecución que se han escrito en MIDLRT. Esto permite usar nuevas técnicas, a la vez que no requiere una conversión completa de un tipo o un archivo. A continuación se muestra un ejemplo.
// Existing RTIDL interface definition.
[contract(FooContract, 1), exclusiveto(SampleClass), uuid(...)]
interface ISampleClass : IInspectable
{
HRESULT Method1([in] boolean something, [in] HSTRING other);
}
// New MIDL 3.0 interface added; needs exclusiveto(), but not uuid().
[contract(FooContract, 2), exclusiveto(SampleClass)]
interface ISampleClass2
{
Windows.Foundation.IAsyncOperation<String> TransformAsync(UInt32 count);
String NameProperty { get; };
}
[contract(FooContract, 1)]
runtimeclass SampleClass
{
[default] interface ISampleClass;
// Reference to MIDL 3.0-defined interface.
[contract(FooContract, 2)] interface ISampleClass2;
}
La adición de construcciones MIDL 3.0 en definiciones runtimeclass de MIDLRT existentes genera un error como este.
1>midl : error MIDL9008 : internal compiler problem - See documentation for suggestions on how to find a workaround.
errors in directory t:\compdev1\src\mincore\coreui\published\idl
t:\compdev1\src\midl : error MIDL9008 : internal compiler problem - See documentation for suggestions on how to find a workaround.
1>midl: Assertion failed: pN->NodeKind() == NODE_INTERFACE_GROUP_MEMBER, file com\rpc\midl\midlrt\front\nodeskl.cxx, line 1403
1>NMAKE : fatal error U1077: 't:\compdev1\src\tools\x86\midl.EXE' : return code '0x2330'
Corrija esto mediante la conversión de la clase completa a MIDL 3.0, o bien mediante la técnica anterior que agrega una nueva interfaz y la agrega a la clase .