No final da segunda parte deste tutorial, nos deparamos com um pequeno problema, mas na verdade é um grande problema, para ser honesto. Se tivermos tempo, valerá a pena estudar esta questão.
Lembra como encontramos esse problema? Naquela época, primeiro compilamos o ActiveXDLL e depois compilamos o programa de teste que usava a DLL. A seguir, recompilamos a DLL, assumindo que o conteúdo da DLL precisa ser modificado. Porém, quando executo o programa de teste novamente, ocorre um erro!
Sim, certamente não pode ser o caso.
Porque a experiência nos diz que se trata de um problema de compatibilidade. Então, pode ser tratado assim:
Inicie o Visual Basic e abra o projeto Northwind;
Selecione o menu "PRoject"->"NorthwindProperties";
Clique na aba “Componente”;
Navegando pelo conteúdo da página "VersionCompatibility", você encontrará três opções. Deixe-me explicar agora:
NoCompatibility - Cada vez que você compila, o componente COM do usuário é marcado com uma nova tag, o que significa que o programa só pode usar a tag antiga (versão anterior) da DLL.
ProjectCompatibility - Os componentes COM do usuário nem sempre são marcados com uma nova tag cada vez que são compilados. Se for, todos os aplicativos usados atualmente falharão. Na verdade, isso só acontecerá se o projeto atual for significativamente diferente do projeto DLL compilado.
BinaryCompatibility - Cada vez que é compilada, a aplicação sempre tenta salvar a tag da DLL compilada anteriormente, garantindo assim que a aplicação utilizada não terá tela azul da morte. Porém, se a DLL atual a ser compilada for muito diferente da DLL compilada anteriormente, uma nova tag será marcada.
Vamos testar o argumento acima:
Abra o programa de teste da parte anterior deste tutorial;
Recompile-o;
Faça um teste e ele deverá funcionar normalmente;
Abra o projeto ActiveXDLL;
Defina sua propriedade como BinaryCompatibility;
Recompile a DLL;
Experimente o programa de teste e ele deverá funcionar bem.
Ok, parece que o problema foi resolvido. Mas quando a DLL for recompilada, a maioria dos desenvolvedores cairá em outra situação de incompatibilidade.
Não existe uma solução melhor? Vamos deixar esse assunto de lado por enquanto!
Você pode visitar os seguintes sites para obter mais conteúdo:
www.PylonOfTheMonth.co.uk.->