【Console Application】外部関数 24【学習記】

いわゆる include よー🤤

Q.
それで、 import できたの?
A.
できたけど埋め込みできないみたい

→ swift でコマンドラインツールの単体バイナリを造りたい場合、外部ライブラリモジュールではなくソースを用意しないとならなそう😞
→ .a なら埋め込める可能性が有るが swift の学習としては別言語ライブラリが混在して良くない

#Xcode #Swift #import
#framework
#学習記


Swift のライブラリ?

それじゃ今回は Swift の番よー🤪

【iOS】静的ライブラリ(.aファイル)を作ってみる
https://llcc.hatenablog.com/entry/2017/11/01/220000

Objective-C じゃん😞
google は入力語ガン無視して表示するようになって悪意しか感じない🙄

あれ? Swift でライブラリを作る方法が出てこない…🙄❓❓❓
framework を作る方法はそれなりに出てくるんだけど…

とりあえず .a が作れるのかやってみようかな🤔

画像1

画像3

そもそも swift の選択肢が無いのよね…😞

画像3

お? swift file 追加しようとしたら「ブリッジヘッダ作る?」って言われた🤔
そのまま作ったらヘッダ無いしどうするんだろって思ったけどなるほど swift でコーディングできるけど内部シンボルは C/C++ 互換にしておいて C/C++ のライブラリとして呼び出す、というヤリクチっぽい🤤

画像4

画像5

で、ブリッジヘッダってどう書くの…?🤪

SwiftとObjective-C連携 with Xcode
https://qiita.com/ysn/items/fa85612cb5adf9a4c05d

これは OCObjective-C で書いたライブラリを swift で使う物っぽい😞

………

一応 OC で swift を呼ぶ方法も書かれてるけれどそもそもその なんたらswift.h というのが無いわけで…🙄
ビルドしたらできるのかな…?

画像6

いつもバイナリができてる Products の中にそれっぽいのは無いかな…😞
あ、また prefix にアンダー追加し忘れてる🙄

画像7

別の場所探したらそれっぽい命名規則のヘッダ発見🤤
これかな?🤔

画像8

ええとサイトによると Define Module を trueYES にして…
ブリッジヘッダを作成…取り込んだのが .a だからそもそも「ブリッジヘッダ作る?」って聞かれない😞
どうすんのこれ🙄

Swiftプロジェクトにブリッジングヘッダを追加する方法
https://qiita.com/titoi2/items/abe7b58a9e644b29e8c3

画像9

画像10

😞😞😞ダヨネー

画像11

画像12

とりあえず OC の時に有った修正と同じ事は やっておこうね🤤

画像13

ヘッダがあったとこの Binary に入ってた .a をコピーしたんだけど file で確認すると中身が想定の .a じゃないので Product からちゃんと持ってきておこうね🤤

なんか変わらないや🙄

画像14

Product の .a と一緒に出てたやつをとりあえず入れてみたけど特に変わるでもなし…😞

そもそも Swift で .astatic library は作れないのでは?

どの記事を見ても .a は OC である事が前提になってて「 Swift から呼ぶ」以外の記事が出てこない🙄
OC から Swift を呼ぶ物も有るけど Swift 側で .a になっている、という手合の資料は皆無…🤔

結  論
Swift で .a は作れない

って事にしとこうかな🤤


素直に Framework で

画像15

画像16

画像17

😞😞😞

ターゲット追加はうまく行かない事が多いなって思う🙄
プロジェクトを丸ごと作り直そうかな😞

画像18

あっさり framework が出力される🙄
コード同じなのにね😞

画像19

hello,world 側に読み込んだは良いけどここからどうするんだろ…🙄

やり方が出てこないんだけど…🤔❓❓❓
とりあえず import にライブラリ名を書いてみようかな…🤤

画像20

画像21

文言が変わった🤔
スコープ内でそんな関数無いぞって言われてるっぽい🙄
なんかスコープ指定しないと省略できない?🤔swiftの作法は分からん

画像22

とりあえず public に🤔

画像23

等号の隣に空白文字要るって🙄

画像24

… swift って演算記号に空白文字必須なの?🙄

画像25

バイナリ単体で出力されてなくて嫌な予感したけどやっぱりだめだった😞
なんで埋め込んでくれないの…😞

【Xcode】自作埋め込みCocoa Touch Frameworkを実機インストール&Archiveする
https://qiita.com/0ba/items/4c79d3525749ac4aa1af

だから Embedded Binries はもう無いんだって…🙄ナンデ変エタ

画像26

埋め込み設定なんだけどなぁ…😞
多分動くしもういいや(ぁ


結論

swift で コマンドラインツールはめた方が良い


次回

main の argv を取り出すのやろうかな🤤

この記事が気に入ったらサポートをしてみませんか?