我使用需要C代码的Delphi XE6在Android上构建了一个应用程序.但是在iOS上我无法使其工作.我怀疑这个问题与手臂/拇指状态有关,但我不确定.两个系统都没有问题从Pascal调用C代码.但是如果C代码回调一个Pascal过程,iOS会生成一个"bad system call (12)"
这是pascal代码:
function testarm(a,b:integer):integer; cdecl; external "testC.o";
Procedure testC;
Begin
testarm(1,2);
end;
function BackToPascal(a,b:integer): integer; cdecl;
Begin
result := a+b;
end;
......
exports
BackToPascal;
Run Code Online (Sandbox Code Playgroud)
这是C代码:
extern int BackToPascal(int a,int b);
extern int testarm(int a,int b)
{
int i;
i = BackToPascal(a,b);
return i+1;
}
Run Code Online (Sandbox Code Playgroud)
在android上这是我编译的方式(它正在工作):
..."arm-linux-androideabi-gcc.exe" -c test.c -o test.o -O3 -mfloat-abi=softfp -mfpu=neon -marm -march=armv7-a -mtune=cortex-a8
Run Code Online (Sandbox Code Playgroud)
在ios上:
xcrun -sdk iphoneos clang -c -arch armv7 test.c -O3 -mfpu=neon -mtune=cortex-a8 -marm -march=armv7-a -mfloat-abi=softfp
Run Code Online (Sandbox Code Playgroud)
我怀疑我的xcode设置是错误的,但我无法弄清楚原因.
当我调试,错误时调用来testC在 …