Fórum criar biblioteca C para delphi #340216
10/04/2007
0
Ola Pessoal,
Tenho um programa em C para o DOS e precisso fazer uma versão em Delphi. Então, pensei em criar uma biblioteca em DLL, por exemplo, das funções em C das quais não tenho em delphi e incorporá-la na nova versão em Delphi. Precisso fazer isso, pois a versão em C possui bibliotecas .h de funções que não conheço sua funcionalidade.
A questão é: É possivel criar uma biblioteca das funções em C do DOS de modo a chamar estas funções pelo delphi? Como posso fazer isso?
Agradeço desde já por qualquer ajuda.
Um abraço a todos.
Tenho um programa em C para o DOS e precisso fazer uma versão em Delphi. Então, pensei em criar uma biblioteca em DLL, por exemplo, das funções em C das quais não tenho em delphi e incorporá-la na nova versão em Delphi. Precisso fazer isso, pois a versão em C possui bibliotecas .h de funções que não conheço sua funcionalidade.
A questão é: É possivel criar uma biblioteca das funções em C do DOS de modo a chamar estas funções pelo delphi? Como posso fazer isso?
Agradeço desde já por qualquer ajuda.
Um abraço a todos.
Acostafeny
Curtir tópico
+ 0
Responder
Posts
11/04/2007
Massuda
Crie no seu compilador C/C++ uma DLL normal. O Delphi não tem nenhuma exigência especial. A única ressalva é que Delphi não é [i:6611dd4136]case sensitive[/i:6611dd4136] de modo que as funções foo(), Foo(), FOO(), fOO() são todas a mesma coisa para Delphi, o que não é verdade no caso de C/C++.
Para o Delphi utilizar essa DLL, você terá que providenciar os ´protótipos´ das funções que você disponibilizar na DLL.
Para o Delphi utilizar essa DLL, você terá que providenciar os ´protótipos´ das funções que você disponibilizar na DLL.
Responder
Gostei + 0
11/04/2007
Adriano Santos
Pode sim cara, sem problemas.
Só vai ter que saber como chamar as funções via Delphi. Aqui trabalhamos com dlls (feitas em delphi mesmo) e que chamamos funções dentro delas desta forma:
Declaro no form o procedimento que será chamado:
Depois é só chamar:
No caso que eu mencionei a dll Infotec.dll precisa estar presente porque é carregada quando o sistema abre e não somente quando a função é chamada. É possível declarar de forma dinâmica, assim a dll será carregada somente no momento que for usada, mas não sei fazer isso.
Se alguém quiser acrescentar um helpzinho ai vai bem, tô precisando disso tb.
;)
Só vai ter que saber como chamar as funções via Delphi. Aqui trabalhamos com dlls (feitas em delphi mesmo) e que chamamos funções dentro delas desta forma:
Declaro no form o procedimento que será chamado:
...
public
{ Public declarations }
end;
function versaoDLL: integer; external ´infotec.dll´;
procedure ImprimeFaturas; external ´infotec.dll´;
procedure ImprimeFaturasLaser; external ´infotec.dll´;
procedure ProtocoloFaturamento; external ´infotec.dll´;
...
Depois é só chamar:
procedure TfrmMatFat01.ImpressodeFaturas2Click(Sender: TObject); begin ImprimeFaturas; end; procedure TfrmMatFat01.ImpressodeFaturasLogoMarca1Click(Sender: TObject); begin ImprimeFaturasLaser; end;
No caso que eu mencionei a dll Infotec.dll precisa estar presente porque é carregada quando o sistema abre e não somente quando a função é chamada. É possível declarar de forma dinâmica, assim a dll será carregada somente no momento que for usada, mas não sei fazer isso.
Se alguém quiser acrescentar um helpzinho ai vai bem, tô precisando disso tb.
;)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)