Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

José Ap. Gevigier Jr.

Falha ao tentar carregar uma DLL com runtime packages.

Recommended Posts

Bom dia.

 

Eu trabalho com um sistema, onde todos os módulos estão contidos em dll's.

 

Já a algum tempo, venho utilizando a opção "Link with runtime packages" marcada, para economizar espaço em disco, o que vem funcionando bem.

 

Estamos migrando a versão do Delphi XE6, e aparentemente estava funcionando bem também. O problema foi quando tentei testar em outras máquinas sem o Delphi Instalado.

 

Separei todos os pacotes que o sistema usa, coloquei no diretório específico, coloquei na variável de ambiente do Delphi e tentei executar, mas no momento de chamar a função "LoadLibrary", mesmo estando tudo nos devidos diretórios, a função retorna 0.

 

Fiz o teste de retirar os pacotes do diretório, e ao tentar executar ele dá o erro que está faltando "rtl200.bpl". Ao devolver os pacotes, ele não dá erro no momento de chamar a função, simplesmente não carrega a dll vindo a dar um "Access Violation" depois. Também testei colocando os pacotes no mesmo diretório do executável, e acontece a mesma coisa.

 

Alguém teria uma ideia do que eu poderia estar esquecendo de verificar e/ou fazer?

 

Grato.

 

José Junior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, tudo bem?

 

 

A DLL que você se refere é DLL mesmo ou BPL? Das duas formas dá pra trabalhar, por isso minha pergunta.

 

Deixe me entender: Você está migrando para o XE6 ou do XE6?

 

Se estiver migrando do XE6, para qual seria a outra versão (XE7) ?

 

Se estiver migrando para o XE6, você chegou a tentar compilar o projeto que está contido em sua DLL com o próprio XE6?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, tudo bem e você?

 

Eu estou migrando do Delphi 2006 para o XE6. Tanto as dll's quanto o executável que inicia o sistema, estão compilados no próprio XE6.

 

Apesar da enorme diferença entre as versões, a migração do código e os testes no funcionamento das regras já estão ok. O problema mesmo foi quando compilamos utilizando o recurso de "runtime packages".

 

Nesse caso o executável nem consegue carregar a dll.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, entendi!

 

Será que não ficou nenhuma dependência da outra versão na relação dos packages? Esse tipo de problema é aquele que pra descobrir, só comparando os arquivos que cada versão do delphi usou pra tentar sacar aonde está o problema.

 

O mais próximo disso que já passei foi resolvido recompilando os packages com a vesão do delphi que iria usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

 

O problema foi resolvido.

 

No Delphi 2006 não acontecia porque não existe nele o conceito de compilação para diferentes plataformas. Já na versão XE6, os pacotes internos da ide (rtl200.bpl, vcl200.bpl, etc) possuem versões diferentes para diferentes plataformas.

 

O erro ao tentar carregar as nossas dll's, que são compiladas para a plataforma win32, acontecia porque os pacotes copiados para o diretório de instalação do sistema, eram de um diretório diferente.

 

Abraços.

 

 

José Junior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo!

 

Hummmmm...entendi.

 

Obrigado por compartilhar sua solução amigo.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.