Wie kann man Swift am besten von C aus anrufen?

8

Der Aufruf von Swift in C ist ziemlich einfach, aber ich versuche, einen bidirektionalen Wrapper in C zu erstellen, also muss mein C Swift-Funktionen aufrufen.

Im Moment kann ich das tun, indem ich Funktionszeiger in C deklariere und meine C-Funktionen sie aufrufen, nachdem die Swift-Seite sie eingerichtet hat, um Code in Swift aufzurufen.

Meine C-Header-Datei:

%Vor%

Meine C-Implementierungsdatei:

%Vor%

Nachdem ich meine C-Header-Datei in den Bridging-Header eingefügt habe, kann ich Folgendes auf der Swift-Seite tun:

%Vor%

Oder sogar:

%Vor%

Gibt es dafür einen besseren Weg, wo Funktionszeiger und Callbacks nicht benötigt werden? Ich möchte, dass die C-Seite someKindOfSwiftFunction direkt aufruft ... aber wenn ich versuche, @convention (c) auf Funktionsdeklarationen anzuwenden, bekomme ich die Nachricht, dass das Attribut nur auf Typen und nicht auf Deklarationen angewendet werden kann.

Irgendwelche Ideen oder Codebasen in z.B. Github kann ich mir ansehen?

    
Dan 30.01.2016, 19:29
quelle

2 Antworten

1

Nach Joe Groff :

  

Es gibt noch keinen offiziellen Weg. Abgesehen von der Namensverfälschung verwenden Swift-Funktionen eine andere Aufrufkonvention als C. Wenn Sie bereit sind, mit mehr als der üblichen Menge an Code-Bruch- und Compiler-Fehlern umzugehen, gibt es ein inoffizielles Attribut @_cdecl, das dies tut:

%Vor%
  

, die Sie dann von C aus aufrufen können:

%Vor%     
Max Desiatov 12.02.2018 17:54
quelle
0

Sie können so etwas tun:

FileSwift.swift

%Vor%

FileSwiftWrapper.h

%Vor%

FileSwiftWrapper.m

%Vor%     
Rolan 30.01.2016 20:36
quelle

Tags und Links