Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Compilerproblem unter MacOS mit Delphi 10.4 (https://www.delphipraxis.net/208499-compilerproblem-unter-macos-mit-delphi-10-4-a.html)

CHackbart 6. Aug 2021 13:28


Compilerproblem unter MacOS mit Delphi 10.4
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich packe das mal in einen separaten Thread und nicht in https://www.delphipraxis.net/208459-fairplay-apple.html. Eigentlich wollte ich ja nur helfen, aber bin dabei über ein Problem gestolpert welches mich seit ein paar Stunden beschäftigt.

Für obiges Beispiel muss man eine Klasse mit einem Interface AVContentKeySessionDelegate erstellen. Das Interface befindet sich in der Macapi.AVFoundation unit. Sobald man aber die Klasse instanziiert, stürzt die Anwendung im constructor TOCLocal.Create;
bei Reg := TRegisteredDelphiClass.RegisterClass(CType, GetObjectiveCClass); ab.
Genauer gesagt es schlägt
Delphi-Quellcode:
 if class_addMethod(ObjCClassId, sel_registerName(M.AsAnsi(MethodName, CP_UTF8).ToPointer),
fehl und FailRegistration wird ausgeführt, was dann zum beenden der Anwendung führt.

Der Grund (nach einigem Trial und Error) sind scheinbar folgende Routinen:

Delphi-Quellcode:
  procedure contentKeySession(session: AVContentKeySession;keyRequest: AVContentKeyRequest); overload; cdecl;
  procedure contentKeySession(session: AVContentKeySession;keyRequest: AVPersistableContentKeyRequest); overload; cdecl;
Sobald man eine der beiden Funktionen davon ausklammert, bzw. einen Parameter hinzufügt stürzt die Anwendung nicht mehr ab. Ich denke mal der Grund ist, dass zwar beides vom Compiler akzeptiert wird, aber bei den beiden Interfaces die übergeben werden nicht mehr weiterweiß.

Anbei habe ich mal eine einfache Beispielanwendung gepackt. Vielleicht hat ja jemand eine Idee wie man das Problem umgehen kann.

Christian

himitsu 6. Aug 2021 13:34

AW: Compilerproblem unter MacOS mit Delphi 10.4
 
Zitat:

Zitat von CHackbart (Beitrag 1493341)
Anbei habe ich mal eine einfache Beispielanwendung gepackt.

Nein.


Welchen Typ hat denn das, was an keyRequest übergeben wird?

CHackbart 6. Aug 2021 13:42

AW: Compilerproblem unter MacOS mit Delphi 10.4
 
Ja der Anhang war wohl nicht mit dabei. Also hab ich den Beitrag nochmals editiert. Die Requests sind beide interface(NSObject).
Quasi so in der Form:

Delphi-Quellcode:
  AVContentKeyRequest = interface(NSObject)
  ['{72EFF0F5-504D-45D7-AF86-6EBBF64778DA}']
  end;
  AVPersistableContentKeyRequest = interface(NSObject)
  ['{4A21A91E-E44C-43C1-A55B-F0B237248ABA}']
  end;

CHackbart 7. Aug 2021 11:16

AW: Compilerproblem unter MacOS mit Delphi 10.4
 
Die Lösung ist in solchen Fällen müssen die MethodName Deklarationen in der Klasse mit angegeben werden. Es reicht nicht darauf zu vertrauen, dass diese aus dem Interface genommen werden.

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf