Compartilhar via


Como: Usar servidores COM nativo com TLBIMP

Ao contrário de outras linguagens. NET, Visual C++ fornece recursos de interoperabilidade que permitem que funções não gerenciadas, incluindo interfaces COM, para ser usado diretamente.Isso permite que os desenvolvedores a evitar Tlbimp.exe e suas desvantagens.Para obter mais informações, consulte Usando servidores nativo COM do .NET.

Este tópico demonstra como objetos COM podem ser usado em código gerenciado a Tipo Biblioteca Importer (Tlbimp.exe) ferramenta. Essa ferramenta .NET estrutura, dada uma biblioteca de tipos COM (ou apenas a DLL que contém o componente COM e a biblioteca de tipos) gera um assembly de interoperabilidade gerenciado que pode ser usado a partir de qualquer linguagem .NET.No entanto, essa técnica, especialmente para bibliotecas de tipo COM grandes e/ou complexas, não é recomendada para programadores de Visual C++.

O exemplo a seguir contém as etapas e o código necessário para usar interfaces COM definidos Quartz.dll, que é instalado no diretório Windows/System32 no Windows XP.Essas interfaces encapsulam funcionalidades do DirectShow para permitir a reprodução de arquivos AVI.Para executar o Tlbimp.exe a partir da linha de comando, você precisará adicionar as ferramentas do .NET estrutura para o caminho do sistema executando Sdkvars.bat no diretório C:\programa Files\Microsoft.NET\SDK\v2.0\Bin.

Para gerar o assembly de interoperabilidade

  1. Em uma janela de aviso de comando, no diretório c:\windows\system32, executar o comando tlbimp quartz.dll. (O nome do assembly de interoperabilidade resultante é baseado no nome da biblioteca de tipos COM; nesse caso, o arquivo resultante é QuartzTypeLib.dll.)

  2. Mova o assembly de interoperabilidade para um diretório onde o aplicativo que utiliza será executado.

Exemplo

O código a seguir define um aplicativo de console que usa o assembly de interoperabilidade gerado anteriormente para exibir um arquivo AVI.

executar o arquivo .exe resultante com o nome de um arquivo AVI válido e o arquivo é processado em uma janela.

// AVIPlayer.cpp
// compile with: /clr
#using <QuartzTypeLib.dll>
using namespace QuartzTypeLib;

using namespace System;
   
void DisplayUsage() {
   Console::WriteLine("AVIPlayer: Plays AVI files."); 
   Console::WriteLine("Usage: AVIPlayer.EXE <filename>"); 
}

int main() { 
   array<String^>^ args = Environment::GetCommandLineArgs();
   if (args->Length != 2) {
      DisplayUsage();
      return 0;
   } 

   String^ filename = args[1]; 
   if (filename->Equals("/?")) { 
      DisplayUsage();
      return 0;
   }

   FilgraphManager^ graphManager = gcnew FilgraphManager();
   IMediaControl^ mc = dynamic_cast<IMediaControl^>(graphManager);

   mc->RenderFile(filename);
   mc->Run();

   Console::WriteLine("press any key");
   Console::ReadLine();
}

Consulte também

Referência

Usando servidores nativo COM do .NET