How to call C from Swift?

Blaze picture Blaze · Jun 3, 2014 · Viewed 67k times · Source

Is there a way to call C routines from Swift?

A lot of iOS / Apple libraries are C only and I'd still like to be able to call those.

For example, I'd like to be able to call the objc runtime libraries from swift.

In particular, how do you bridge iOS C headers?

Answer

Leandros picture Leandros · Jun 3, 2014

Yes, you can of course interact with Apples C libraries. Here is explained how.
Basically, the C types, C pointers, etc are translated into Swift objects, for example a C int in Swift is a CInt.

I've build a tiny example, for another question, which can be used as a little explanation, on how to bridge between C and Swift:

main.swift

import Foundation

var output: CInt = 0
getInput(&output)

println(output)

UserInput.c

#include <stdio.h>

void getInput(int *output) {
    scanf("%i", output);
}

cliinput-Bridging-Header.h

void getInput(int *output);

Here is the original answer.