A definição do tipo de empacotamento
Antes de criar um empacotador, você deve definir as interfaces gerenciadas e sendo empacotadas. Essas interfaces normalmente executam a mesma função, mas são expostas diferente para os objetos gerenciados e não gerenciados.
Um compilador gerenciado produz uma interface gerenciada a partir de metadados e a interface resultante é semelhante a qualquer outra interface gerenciada. O exemplo de código a seguir mostra uma interface comum:
#using <mscorlib.dll>
interface INew {
void NewMethod();
}
Defina o tipo não gerenciado na Interface Definition Language (IDL) e compilá-lo com o compilador MIDL. Definir a interface de uma instrução de biblioteca e atribuí-la uma identificação de interface com o atributo do identificador exclusivo universal (UUID).
Em Old.idl
[uuid(9B2BAADA-0705-11D3-A0CD-00C04FA35826)]
library OldLib {
[uuid(9B2BAADD-0705-11D3-A0CD-00C04FA35826)]
interface IOld : IUnknown
HRESULT OldMethod();
}
O compilador MIDL produz vários arquivos de saída. Se a interface é definida em Old.idl, o arquivo de saída Old_i.c define um const variável com o identificador de interface (IID) da interface:
Em Old_i.c
const IID IID_IOld = {0x9B2BAADD,0x0705,0x11D3,{0xA0,0xCD,0x00,0xC0,0x4F,0xA3,0x58,0x26}};
O arquivo de Old.h também é produzido pelo MIDL. Ele contém uma definição de C++ da interface que pode ser # incluído em seu código de origem do C++.