bmaxa
Legenda
- Poruka
- 70.808
Elem, neobicno je to sto nema keyword extern kao obicno pa pozoves f-ju ko covek.
Svuda na netu pominju neki stub header koji se pravi u XCode. E sad posle
duzeg pretrazivanja, provalio sam o cemu se radi. Naime swift kompajler ume
da parsuje Obj-C headere
Dakle ima opcija -import-objc-header i on lepo iz toga napravi prototipe f-ja.
Linkovanje je klasika.
Lako kad se jednom provali, ali info je tesko naci.
Svuda na netu pominju neki stub header koji se pravi u XCode. E sad posle
duzeg pretrazivanja, provalio sam o cemu se radi. Naime swift kompajler ume
da parsuje Obj-C headere

Dakle ima opcija -import-objc-header i on lepo iz toga napravi prototipe f-ja.
Linkovanje je klasika.
Kod:
bmaxa@Branimirs-Air knucleotide % gcc stub.c -o stub.o -c
bmaxa@Branimirs-Air knucleotide % swiftc -Ounchecked bridging.swift -o bridging.o -import-objc-header stub.h -c
bmaxa@Branimirs-Air knucleotide % swiftc -o hello stub.o bridging.o
bmaxa@Branimirs-Air knucleotide % ./hello
Hello World, Branimir !
bmaxa@Branimirs-Air knucleotide % cat stub.c
#include <stdio.h>
void f(const char* name){
printf("Hello World, %s !\n",name);
}
bmaxa@Branimirs-Air knucleotide % cat bridging.swift
let hello = "Branimir"
hello.withCString{
f($0)
}
bmaxa@Branimirs-Air knucleotide % cat stub.h
void f(const char*);