見出し画像

【Console Application】ファイルとデータベース 289【学習記】

今回の概略

tdb とかの Framework ライブラリは 'TARGET -> General -> Frameworks and Libraries' から足してプロジェクトナビゲータに追加されるだけだと正しくリンクされない?🤔
ナビゲータから改めてドロップして一覧に追加されているとシンボル参照不能のビルドエラーは消える🤔
やっぱライブラリ一覧に無いとダメっぽい😑
implementation 直下に書いてた変数は、やっぱりグローバルで名前が競合するのでローカル化必須だった😞

#学習記 #Objective_C
#Xcode

【Console Application】ファイルとデータベース【学習記】
仕様
https://note.com/sayka/n/nb8a67fa90a64?magazine_key=m7bb64c6a359f#br1mB

仕様
レコード
・レベル
 1-12
・難易度
 b,n,h,a,l
・曲名
・ランプ
 -,x,a,e,c,h,e,f

オプションスイッチ
-u file.csv # 更新(略値)
 ファイル名だけ指定した場合更新処理と見做す
-d file.csv # 削除
-p # csv 出力(略値)
 何も指定せずに起動した場合出力処理と見做す
-v # バージョン
-h # ヘルプ

----備忘録
(現在無し)

前回の粗筋

SQL 関連のリンクでエラーががが🙄



謎のエラー

謎って言うか、リンクエラーだと思うんだけど果たして解は見つかるのだろうか…😞
予想としては tdb を取り込む方法に作法が有ってそれが守られていないか、 tdb の指す dylib を探して直接加えるかで解決すると思うんだけど…🤔

これらの問題点は、 tdb がそもそも Swift の登場によって OCObuective-C 主体のライブラリ dylib との混在を解消するのに現れた間接参照だと思おうのよね😑
即ち、過去の開発環境である OC で Swift 用の tdb を扱わなければならない知見がそもそも少ない🙄
これが現れた当時はまだ簡単に dylib を持ってくる事が可能だったので「 dylib を探してリンクした」で終わる記事ばかりが出てきてそれ以上は見当たらないというオチになる😞
そして Swift では tdb をプロジェクトに加えて C Header として SQLite.h を加えるだけ… OC での配慮ゼロ🙄
そんな状態で時は流れ( Wikipedia によると2014年にβ版を開発者が使えた)……… OC で tdb に悩む初心者はそもそも Swift を使っているので居なくなり、元々 OC でやってた人は知見が有るので記事にならずビルドし………資料の無いまま今に至る…というのが深層ではなかろうか😞


OC に tdb

ではまず正攻法とおぼしき OC へ tdb を組み込む正しい作法が存在するのかを調べるお🤤
前回やったみたいに "Frameworks and Libraries" へ足すだけ、みたいな記事は全部飛ばすお🙄だってそれやって今これだもん

AllJoyn 触ってみた
https://blog.kakakikikeke.com/2015/12/try-alljoyn.html

Link Binary With Libraries -> + -> で以下のライブラリを追加

確か前にやった時も "Link Binary" という語だったと思うけどこれどこだったかの ver の Xcode で無くなってるシロモノなのよね🙄
でも OC の記事は古い物しか無いので無く成った項目を頼りに探すしか無い😞
そしてたどり着いたのが件の項目での追加なんだけど…もう一度項目を探してみるぽ🙄

項目、有るね🤤
でもこれ確か static についてで dynamic はここではなかった気がするので確認するぽ🤔

libz.dylibがxcode7では無くなってしまった?!
https://blog.myntinc.com/2016/02/libzdylibxcode7.html

この記事はちょっと趣旨と違うけど、この記事を見る限りでは件の項目に frameworks が追加されていて、必要なライブラリもここから追加しているのでここの載らないと使えないと考えて良さそう😑
ただ SQLite のライブラリは標準のものなのでここに載らなくても取り込まれる可能性はゼロではないかなと思う🤔
なぜなら Faoundation.framework は載ってないのに取り込まれるから😑違いはワカラナイ

別のプロジェクト作成の時もここには載らないけどここから追加して左のペインのフォルダに追加されてれば有効、みたいな事も有ったので今はそれに近い状態だけど tdb 見たらリンクできないってエラーなのかなと思ってる😞

なんか左のペインからドロップしたら追加されたお…🙄
これで行けちゃったりしたら楽なんだけど…😞予想通りならそんなうまく行かない

あ!やった!
エラーの内容が変わって SQLite 系のシンボル不明が消えた😭
やっぱライブラリ一覧に載ってないと「知らんぞそんなん」ってなるのかな😑

今の状態で出てるエラーはグローバルになってるオブジェクトの使い方が悪いのか名前が全部大文字なのが悪いのか、そんなところかは🤤


global?

どうもこの使い方が気に入らないみたい😑
C 言語的に言うと各所で使っている SLIB という名前をこういう書き方で宣言しているとグローバルになってて衝突conflictしたりするのかな🤔
エラーを見る限りだと参照がわからんって事だからクラスメンバーならプロパティ宣言せんと知らん変数だぞって事だと思うけどエラー出てないのよね、コンパイル段階では🙄
まぁ、 C 系はコンパイル通ってもリンクでエラーとか普通に有るけどそれを思い出させる出来事だわね今回のエラーは😑

要するに、こういうプロパティ宣言する事かなと😑
上の写真では伏せちゃったけどどこにある変数名で文句言ってるのかは出てるからそれぞれ同じ状態かなと思う🙄

思ったよりローカル化に必要な書き換えが多い😫
まぁ、解決方法が分からなくて無限回廊になるより全然マシなんだけど🙄

まだ抜けが有る気がするけど一通り手を付けたのでこれでビルドするぽ😑

ヨシ!👈🤪


次回は

やっとデバグできる…筈…🙄

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