Cruzamento de Linguagens (Delphi7 x Borland C 5.0 1991/96)
02/06/2006 sex 11:40
Prezados participantes do Forum Delphi,
Recentemente tive uma solução acompanhada de um problema
na chamada pelo DELPHI7 a um DLL programado em C++.
A solução foi que eu consegui chamar esse DLL aparentemente
com sucesso porem logo a seguir (quando sai do evento) o sistema
operacional dá varios tipos de erro como Instrução Invalida,
tela com parte da memoria que deu erro e outros tipos que não me
lembro agora. Examinando o retorno da função (Delphi) parece que
o DLL ´estraga´ os parametros ao sair...Uma solução ´quebra galho´
foi dar um ´exit´ (retorno do evento) ao final da procedure que
chama o DLL.
Programo em C++ (com pouco enfase ao ++ pois gosto de programar
complicando a codificação o minimo possivel) e desenvolvi muitas
funções interessantes que é dificil fazer no Delphi(Pascal). Esse
C++ só da tela em Dos Mode e fica meio desagradavel fazer o usuario
do programa ler/digitar numa tela com poucos recursos.
Por outro lado o Delphi tem recursos visuais que o meu C++ não
tem tais como telas muito apresentaveis e elasticas aproveitando
bem os recursos do micro.
É uma pena descobrir que os dois não tem uma convivencia
muito pacifica pois seria interessante unir o
util a mim (C++) ao agradavel ao usuario (Delphi).
Alguem já sentiu esse problema? Qual foi a solução??
Prezados participantes do Forum Delphi,
Recentemente tive uma solução acompanhada de um problema
na chamada pelo DELPHI7 a um DLL programado em C++.
A solução foi que eu consegui chamar esse DLL aparentemente
com sucesso porem logo a seguir (quando sai do evento) o sistema
operacional dá varios tipos de erro como Instrução Invalida,
tela com parte da memoria que deu erro e outros tipos que não me
lembro agora. Examinando o retorno da função (Delphi) parece que
o DLL ´estraga´ os parametros ao sair...Uma solução ´quebra galho´
foi dar um ´exit´ (retorno do evento) ao final da procedure que
chama o DLL.
Programo em C++ (com pouco enfase ao ++ pois gosto de programar
complicando a codificação o minimo possivel) e desenvolvi muitas
funções interessantes que é dificil fazer no Delphi(Pascal). Esse
C++ só da tela em Dos Mode e fica meio desagradavel fazer o usuario
do programa ler/digitar numa tela com poucos recursos.
Por outro lado o Delphi tem recursos visuais que o meu C++ não
tem tais como telas muito apresentaveis e elasticas aproveitando
bem os recursos do micro.
É uma pena descobrir que os dois não tem uma convivencia
muito pacifica pois seria interessante unir o
util a mim (C++) ao agradavel ao usuario (Delphi).
Alguem já sentiu esse problema? Qual foi a solução??
Laertius
Curtidas 0
Respostas
Massuda
02/06/2006
Talvez você não tenha ajustado corretamente a [b:5d8f2eafab]convenção de chamada[/b:5d8f2eafab] das suas funções em C na DLL. O mais simples é declarar suas funções em C como sendo WINAPI (macro definida em Windows.h ou WinDef.h... não lembro), por exemplo......e declarar assim em Delphi...
/* em C */ int WINAPI foo(int x...
// em Delphi function foo(x: Integer...): Integer; stdcall; external ´suadll´;
GOSTEI 0