2012-04-13 9 views
1

Ich bin daran interessiert, mit Firefemonkey eine iOS App zu erstellen. Es gibt mehrere native C-Bibliotheken, die ich in dieser Anwendung verwenden möchte. Ich weiß, dass iOS dynamische Bibliotheken nicht zulässt, aber gibt es eine Möglichkeit, statische Bibliotheken in dieser iOS-App zu verwenden?Verwendung von statischen N-C-Bibliotheken in Delphi FireMonkey iOS-Entwicklung

+0

Was bedeutet die FPC-Dokumentation müssen zu der Sache sagen? –

+0

Es scheint, dass Delphi im Allgemeinen keine statischen Bibliotheken erstellen oder verwenden kann. – user1027169

Antwort

2

Ja, Sie können C statische Bibliotheken verwenden, um mit Firemonkey iOS Appli mit xcode zu verknüpfen. Ich habe es mit Xcode außerhalb von RADStudio X2 getan. Mit RADStudio habe ich xcode project erstellt. Auf dem Mac openned ich das Xcode-Projekt und das hinzugefügt:

function C_func(double :x):double; cdecl; external; 

{$linklib my_c_lib.a} 

I statisches Bibliothek-Projekt in Xcode (benannt my_c_lib) erstellt mit einer C-Datei enthält:

double C_func(double x) 
{ 
    return x+2.5; 
} 

Ich nehme an, dass in der gleichen Weise Sie kann bereits kompilierte statische Bibliotheken verwenden. Hier

+0

gibt es einen Post über eine ähnliche Frage [hier] (http://stackoverflow.com/questions/10287149/how-to-call-nsbeep-from-delphi) – Yazou

1

ist eine iOS-Anwendung ich gemacht: Unit1.pas von XE2 generiert:

unit Unit1; 

interface 

uses 
    SysUtils, Types, UITypes, Classes, Variants, FMX_Types, FMX_Controls, FMX_Forms, 
    FMX_Dialogs, FMXTee_Engine, FMXTee_Series, FMXTee_Procs, FMXTee_Chart, 
    FMX_ExtCtrls; 

type 
    TForm1 = class(TForm) 
    CornerButton1: TCornerButton; 
    Chart1: TChart; 
    Series1: TLineSeries; 
    Label1: TLabel; 

    procedure CornerButton1Click(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    x : double; // I added this in Xcode Editor 
    end; 

// I added this declaration 
function tst_function(x:double):double;cdecl;external; 
var 
    Form1: TForm1; 


implementation 

{$R *.lfm} 
{$link tst1.o} // I added this 

procedure TForm1.CornerButton1Click(Sender: TObject); 
var  i: integer; x : double; 
begin 
for i := 1 to 500 do 
begin 
x:=tst_function(i*3.14/250.0); 
Series2.Add(x); 

end 

end; 

end. 

und die C-Datei tst1.c ist:

#include <stdio.h> 
#include <math.h> 

double tst_function(double x) 
{ 
    return sin(x)+0.25; 
} 
Verwandte Themen