How to call C from Swift?

c, swift

Solution

Yes, you can of course interact with Apple's 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 built 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.

Problem

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?

Original source

Related problems