criar biblioteca C para delphi

Delphi

10/04/2007

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.


Acostafeny

Acostafeny

Curtidas 0

Respostas

Massuda

Massuda

10/04/2007

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.


GOSTEI 0
Adriano Santos

Adriano Santos

10/04/2007

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:
...
  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.

;)


GOSTEI 0
POSTAR