|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1568
|
[DELPHI - C] Chiamare funzioni C dal Delphi.
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 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1568
|
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: Codice:
{$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:
#include <stdlib.h> int prova(); int prova() { return 5; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:43.