Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#12

AW: Hat Jemand schonmal mit TestFairy herumgespielt ?

  Alt 13. Mai 2016, 12:19
@MKinzler

Ja das hatte ich schon gesehen, scheint aber dasgleiche zu machen als das von Hand.
Schien mir komlizierter als es direkt zu versuchen.

Bin auch wieder ein stückchen weiter:

Ich hatte den Namen des Interfaces umbenannt, das macht sinn das es 1:1 gleich ist wie in der Library.
Jetzt bekomme ich jedenfalls einen ordentlichen Linioer error 00000001, aber warum weiis ich nicht.

So siehts in der Library aus, mit dem Header:

Code:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface TestFairy: NSObject

/**
 * Initialize a TestFairy session.
 *
 * @param appToken Your key as given to you in your TestFairy account
 */
+ (void)begin:(NSString *)appToken;
Das ist das Interface dazu, jetzt mit gleichen Namen.
Habe auch versucht die GUUID wegzulassen, so wie in Daniels Beispiel, ist aber immer noch mit Error.

Delphi-Quellcode:
type
  { S4TfLibrary / TS4TfLibrary }

  // non-static (instance) methods of "TfLibrary"
  TestFairy = interface(NSObject)
// ['{5875CABD-AEBA-4A91-A03F-C3DA9BFE24AD}']

    // Interface relates to name and signature in Library
    procedure &begin( appToken : NSString ); cdecl;

  end;

  // static (class) methods of "MyLibrary"
  TestFairyClass = interface(NSObjectClass)
  end;

  TTestFairy = class(TOCGenericImport<TestFairyClass, TestFairy>)
  end;

Gelinkt wird ann mit dieser Zeile, sollte ebenfalls Daniels Beispiel entsprechen:

Delphi-Quellcode:
{$IF DEFINED(CPUARM)}
function FAKE_LOADER : TTestFairy; cdecl; external LIB_TF_LIBRARY name 'OBJC_CLASS_$_TestFairy';
{$ENDIF}


initialization
{$IF DEFINED(CPUARM)}
  /// although this code is NEVER executed, it ensures a strong reference
  /// to the library - the linker is gonna LOVE (and consume) it!
  if FALSE then
    FAKE_LOADER;
{$ENDIF}

Die Library liegt im gleichen Verzeichnis wie die Sourcen, so definiert:
Delphi-Quellcode:
const
  LIB_TF_LIBRARY = 'libTestFairy.a';

Was kann denn jetzt noch schieflaufen ?
Ich versuche mal ein bischen die Verzeichnisse aus.

Rollo
  Mit Zitat antworten Zitat