2012-04-13 3 views
1

Я заинтересован в использовании Firemonkey для создания приложения iOS. Есть несколько родных библиотек C, которые я хотел бы использовать в этом приложении. Я знаю, что iOS не позволяет использовать динамические библиотеки ссылок, но есть ли способ использовать статические библиотеки в этом приложении iOS firemonkey?Использование собственных C статических библиотек в разработке Delphi Firemonkey iOS

+0

Что документация FPC должны скажите по этому поводу? –

+0

Кажется, что Delphi вообще не может создавать или использовать статические библиотеки. – user1027169

ответ

2

Да, вы можете использовать C статические библиотеки для связи с iOS-приложением Firemonkey с помощью xcode. Я сделал это с помощью Xcode вне RADStudio X2. С RADStudio я создал проект xcode. На макинтош я openned проект Xcode и добавил:

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

{$linklib my_c_lib.a} 

Я создал статический проект библиотеки в Xcode (названный my_c_lib) с один C-файл, содержащий:

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

Я полагаю, что таким же образом вы могут использовать уже скомпилированные статические библиотеки.

+0

есть сообщение о подобном вопросе [здесь] (http://stackoverflow.com/questions/10287149/how-to-call-nsbeep-from-delphi) – Yazou

1

Вот это приложение IOS я сделал: Unit1.pas порождается XE2:

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. 

и C файл tst1.c является:

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

double tst_function(double x) 
{ 
    return sin(x)+0.25; 
} 
Смежные вопросы