我对使用Firemonkey制作iOS应用感兴趣。我想在这个应用程序中使用几个本机C库。我知道iOS不允许动态链接库,但有没有办法在这个firemonkey iOS应用程序中使用静态库?
答案 0 :(得分:2)
是的,您可以使用C静态库使用xcode链接Firemonkey iOS appli。 我是在RADStudio X2之外使用Xcode做的。使用RADStudio,我生成了xcode项目。在Mac上我打开了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;
}
我想你可以用同样的方式使用已编译的静态库。
答案 1 :(得分: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;
}