Ir para conteúdo
  • Cadastre-se

dev botao

Recompilando Acbrframework32.dll No Lazarus


Ver Solução Respondido por FabricioPAraujo,
  • Este tópico foi criado há 4308 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Sistema: Windows 7 64 Home Basic

Lazarus: 1.0.4

As custom options do compilador: -dCONSOLE -dFRAMEWORK -dCDECL

 

O fonte da ACBr que eu usei precisa ser atualizado,  mas primeiro preciso fazer isso funcionar.

Eu recompilei a DLL (com o ACBrFramework32.lpi) e as option indicam que a convenção de chamada

é CDECL.

 

Quando eu usei a DLL antiga (28/11) tudo funciona blz (mas sem a minha interop da AcbrETQ e a função EnviaComando da ECF), mas com a nova DLL tudo voa (access violation no VS2010).

 

Qual é o pulo do gato?

 

 

 

Postado

Não entendi a questão.

 

Você consegue compilar a ACBrFramework32.dll ?

 

Access violation exatamente onde? O ACBrFramework.Net compila corretamente?

 

ACBrETQ?

 

(...)

 

Coisas que talvez te ajude:

 

A dll nativa ACBrFramework32.dll e ACBrFramework64.dll só compilam em CDECL agora. A versão STDCALL foi descontinuada em favor com COM Interop com C# (vide outro post sobre isso)

 

A ACBrFramework.Net.dll coloca a dll nativa como um recurso embutido nela, e a utiliza em tempo de execução. Dessa forma não precisa distribuir a DLL nativa e a DLL .Net, apenas um arquivo contempla os dois. Cuidado com alguma versão antiga da DLL nativa em seu PATH, pois o SO vai usar esta ao invés da versão embutida.

 

Qualquer alteração na dll nativa, você deve recompilá-la e recompilar a dll .Net depois.

(de vez em quando o VS mantém a DLL nativa em uso o que impede da runtime atualizar a versão recém compilada. Nesses casos só fechando e reabrindo o VS)

 

Em máquinas com SO 64bits, você deve compilar seu executável para x86 (ao invés de AnyCPU), pois senão ele não é capaz de carregar a DLL nativa de 32bits.

 

Abs,

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Rafael,

 

 

Depois que eu compilo a DLL e recompilo o AF.net, passa a dar access violation

todas as vezes que eu acesso a propriedade Device da ECF - como no caso da config

da porta.

 

Se retornar à DLL original da ACBr, volta tudo ao normal.

Postado

É, nesse caso não temos muito o que fazer.

Deve ter sido alguma modificação que você fez nos fontes que incompatibilizou com as versões mais novas.

 

(...)

 

Deixa eu dar uma sugestão:

 

Se você baixar os fontes originais do ACBr e ACBrFramework conforme o SVN, compilar tudo sem as modificações e rodar o ECFTeste por exemplo, funciona?

Se funcionar, suas modificações causaram algum problema, basta você revisá-las para implementar novamente de acordo.

Se não funcionar, é coisa de ambiente, pode ser sua máquina ou alguma coisa instalada errado.

 

(...)

 

Para evitar esse trabalho de revisão em caso de incompatibilidades, eu encorajo fortemente os usuários a compartilhar as alterações feitas aqui no fórum. Assim nós podemos incorporá-las ao SVN e mantê-las funcionando sempre.

 

Abs

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Rodrigo Batiati:

Para evitar esse trabalho de revisão em caso de incompatibilidades, eu encorajo fortemente os usuários a compartilhar as alterações feitas aqui no fórum. Assim nós podemos incorporá-las ao SVN e mantê-las funcionando sempre.

 

Abs

 

As soon as possible ....

  • 2 semanas depois ...
  • Este tópico foi criado há 4308 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.