PROBLEMA: Mensagens de erro ao recompilar o componente ActiveX com Binary Compatibility

Traduções deste artigo Traduções deste artigo
ID do artigo: 258192 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sintomas

Um erro em tempo de execução é gerado quando um componente ActiveX recompilar no Visual Basic, da seguinte maneira.

Quando recompilar um Visual Basic ActiveX EXE ou DLL ActiveX, o aplicativo cliente pode exibir a seguinte mensagem de erro:
Erro de tempo de execução '430':

Classe não suporte para automação ou não tem suporte para interface esperada
Quando é recompilado um UserControl do Visual Basic, o aplicativo cliente pode exibir a seguinte mensagem de erro:
Falha ao ativar o controle 'VB.UserControl'. Esse controle pode ser incompatível com o seu aplicativo. Certifique-se que estão usando a versão do controle que foi fornecido com o seu aplicativo.

Causa

Esses erros ocorrem se pública métodos ou propriedades forem adicionadas ao componente ActiveX depois de fazer uma cópia para Binary Compatibility e, em seguida, recompilar o componente de uma segunda vez.

Quando novos métodos públicos ou propriedades são adicionadas a um exe ActiveX, .dll ActiveX ou um UserControl com Binary Compatibility conjunto, Visual Basic adiciona uma nova interface para a segunda versão para novos aplicativos de cliente usar e cria um ponteiro da interface antiga para a nova interface para que os clientes antigos continuam a funcionar.

No entanto, um problema ocorre quando uma terceira versão desse novo componente ActiveX é compilada sem redefinir o arquivo binário compatível para a segunda versão do arquivo .exe, .dll ou .ocx ActiveX. Quando isso ocorre, um novo identificador universalmente exclusivo (UUID) e interface são gerados e os aplicativos cliente compilados contra a segunda versão falharem.

Resolução

Verifique se Binary Compatibility é sempre definido como a versão mais recente do seu componente ActiveX, ou uma versão que inclui todas as propriedades e métodos públicos .

Situação

Esse comportamento é por design.

Mais Informações

Discussão a seguir usa um arquivo .exe de ActiveX como um exemplo, mas deve-se observar que o comportamento de interfaces é o mesmo para todos os três tipos de componentes ActiveX.

Quando você primeiro compile um ActiveX .exe, .dll ActiveX ou UserControl (por exemplo, Server1.exe), Visual Basic cria uma interface para o público métodos e propriedades, da seguinte maneira:

Recolher esta tabelaExpandir esta tabela
Interface1
Method1
Method2
Method3
Propriedade1
Propriedade2

Se for adicionado um novo método para o .exe ActiveX existente e Binary Compatibility é definida como Server1.exe, quando o .exe modificado é recompilada para Server2.exe, a estrutura de interface é da seguinte maneira:

Recolher esta tabelaExpandir esta tabela
Interface1 --> Interface2
Method1
Method2
Method3
Propriedade1
Propriedade2
Method4
Property3

Chamadas em Interface1 são redirecionadas para o método ou propriedade em Interface2 correto para clientes antigos. Novos clientes usam automaticamente Interface2.

Esse mecanismo é transparente para o usuário e não precisa de nenhuma codificação especial no cliente ou o servidor.

Se o .exe é compilado novamente sem alterar a referência de arquivo para compatibilidade binária, (Server3.exe chamá-lo), em seguida, a tabela a seguir é gerada:

Recolher esta tabelaExpandir esta tabela
Interface1 --> Interface3
Method1
Method2
Method3
Propriedade1
Propriedade2
Method4
Property3

Interface2 e Interface3 agora tem os mesmos métodos mas não são a mesma interface porque eles não têm o mesmo UUID. Isso significa que Server2.exe e Server3.exe não podem ser usado alternadamente porque eles não são compatíveis entre si. Eles são, no entanto, compatível com Server1.exe e podem ser usados com aplicativos que já são compilados para usar Server1.exe.

Referências

161137COMO: Usar o Project e Binary Compatibility

Propriedades

ID do artigo: 258192 - Última revisão: terça-feira, 13 de maio de 2003 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palavras-chave: 
kbmt kbctrlcreate kbdll kbinprocsvr kblocalsvr kbprb KB258192 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 258192

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com