SORU
24 AĞUSTOS 2014, Pazar


Delphi XE6 bağlantı iOS C kodu

Android Uygulaması C kod gerektiren Delphi XE6 kullanarak yaptım. Ancak iOS beceremiyorum. Sorun kol/thumb durumu ile ilgili olduğunu düşünüyorum, ama emin değilim. Ya sistemde sorun Pascal, C kodu aramak yok. Ama eğer C kodu Pascal bir prosedür ararsa iOS oluşturduğu bir "kötü sistem çağrısı (12)"

İşte pascal kodu:

    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;

Ve burada C kodu

extern int BackToPascal(int a,int b);

extern int testarm(int a,int b)
{
   int i;
   i = BackToPascal(a,b);
   return i 1;
}

Android bu derleme, ben değilim (çalışıyor):

..."arm-linux-androideabi-gcc.exe" -c test.c -o test.o -O3 -mfloat-abi=softfp -mfpu=neon -marm -march=armv7-a -mtune=cortex-a8

İos:

xcrun -sdk iphoneos clang -c -arch armv7 test.c -O3 -mfpu=neon -mtune=cortex-a8 -marm -march=armv7-a -mfloat-abi=softfp

Böyle büyük mükafat ayarlarımı yanlış ama neden çıkaramıyorum sanırım.

Ben hata ayıklama, hata "BackToPascal ("bl 0x8b8390 Xgobj.çağırırken testarm "testC çağırırken geliyor BackToPascal (int, int)" ). Android mükemmel ancak çalışıyor "" doğrudan çağırmaz "BackToPascal", ama aşağıdaki kod: . bl

75A82D94 12C68FE2         add r12, pc, #18874368 ; 0x1200000
75A82D98 73CA8CE2         add r12, r12, #471040 ; 0x73000
75A82D9C 40F2BCE5         ldr pc, [r12, #576]! ; 0x240

BackToPascal içine almak

CEVAP
18 Kasım 2014, Salı


Alt projeleri ana proje alt dizinleri yaşamak gerekir TV izleme bir kısıtlama gibi görünüyor (yani, dosya("../foo") yasaktır). Bu gerçekten (bir modül ... ne varsa "ya da" Avam "paketi iki farklı ana projelerde kullanılır?)" formundadır gibi, istediğim bir şey değil ama bununla da yaşayabilirim.

TV izleme 13.5 ve kişisel 13.x, ınter-proje göreli yol ile bağımlılık, bir kullanarak belirtebilirsinizİnşa.scala. Hadi iki proje, çekirdek bir proje varcommonsve başka bir projefooher iki ortak bir dizin yaşıyorkod/

  1. Yapı oluşturmak.kod/foo/proje/ scala altında
  2. bu kod parçacığını insde Kurmak.scala

    object ProjectDependencies {
    
    val commons = RootProject(file("../commons"))}
    
    object ProjectBuild extends Build {
    
    import ProjectDependencies._
    
    lazy val root = Project(id = "foo", base = file(".")).dependsOn(commons)}
    
  3. sbt gen-idea TV izleme yoluyla kişisel proje üretmek

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Matt Stokes

    Matt Stokes

    22 Ocak 2008
  • thegeniuses.tv

    thegeniuses.

    11 Aralık 2006
  • tychoadragmire

    tychoadragmi

    20 Mart 2006