View Full Version : [DELPHI - C] Chiamare funzioni C dal Delphi.
nico88desmo
02-03-2007, 21:42
Un saluto a tutti!
Ho visto che in Delphi si possono chiamare delle funzioni scritte in C se si utilizzano le DLL.
Siccome io dovrò fare un programma multi-piattaforma non potrò usufruire delle DLL perchè utilizzabili solo da Windows.
Ho visto che si potrebbe linkare l'object del C tramite la direttiva
- {$L progC.o}
e in questo modo si collega il file C (o meglio il codice oggetto del C) al progetto delphi.
però poi per chiamare le funzioni?
Grazie a tutti
nico88desmo
03-03-2007, 14:01
Ci sono riuscito!!!
Scrivo le sequenze da fare per creare il .exe.
Con questo si genera il .o di nome c1.o che è il file oggetto del C
- gcc -c c1.c
Una volta fatto questo, tramite la direttiva scritta all'interno della unit pascal
- {$L c1.o}
permetto di richiamare le funzioni scritte in C e poi la dichiarazione della funzione C è:
- function prova():integer; cdecl; external;
external = dice che è una funzione esterna;
cdecl = (c declaration) dice che è una funzione scritta in C
Precisazione;
Come ambiente di sviluppo ho utilizzato
- LAZARUS per form e codice delphi(pascal) (compatibile sia linux sia windows)
e come compilatore
- GCC come compilatore del C
Il linkaggio del programma è stato fatto tramite l'IDE LAZARUS.
codice delphi:
{$L c1.o}
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
function prova():integer; cdecl; external;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
n:integer;
begin
n:=prova();
Memo1.text:=inttostr(n);
end;
codice C:
#include <stdlib.h>
int prova();
int prova() {
return 5;
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.