万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

SwiftとC連携 without Xcode

C言語の連携もObjective-Cのとき同じ感じでできそう。 てか出来た。

以前、Xcodeが必須と思ってた How to call C from Swift? - Stack Overflow を参考にした。

C言語のソースファイル

#include <stdio.h>

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

コンパイル

C言語のファイルをコンパイルし、UserInput.oを生成。

xcrun clang UserInput.c -o UserInput.o -c

そしてSwiftのファイル自体は

これはインプットされたものをoutputに格納させて、出力している。 ちなみに、数字のみ対応。

import Foundation

var output: CInt = 0
getInput(&output)

println(output)

ヘッダファイル

void getInput(int *output);

このファイルがおそらくSwiftC言語を繋ぐもの。

コンパイル

Swiftのファイルをコンパイルし、main.oを生成。

xcrun swiftc -c main.swift -import-objc-header cliinput-Bridging-Header.h -F /System/Library/Frameworks -I /usr/include

最終的に行うのは

今まで生成した、SwiftコンパイルされたUserInput.oと C言語のmain.oを元に、Inputという実行ファイルが生成される。

xcrun swiftc -o Input UserInput.o main.o

実行

./Input

新版 明解C言語 入門編

新版 明解C言語 入門編

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

はじめてのSwiftプログラミング (I・O BOOKS)

はじめてのSwiftプログラミング (I・O BOOKS)