xcode 9に切り替えた後、エラーが発生します。このように見えます。
プロジェクト名とクラス名を空白にしましたが、.oサフィックスで終わるクラスのリストがあります。 Xcode 8.3.2では、すべてが機能します。私は2つのプロジェクトを手に入れました。1つは問題なく構築されているライブラリです。別のプロジェクトはテストアプリで、Podfileの:pathディレクティブによってライブラリを指します。両方のプロジェクトのビルド設定->アーキテクチャが標準のアーキテクチャに設定され、アクティブなアーキテクチャのビルドのみがDEBUGに設定されます:はい、リリース:いいえ。この問題に遭遇しましたか?助けてくれてありがとう。
プロファイリング用のビルドを実行したときは機能していましたが、クラシックビルドではエラーが発生していました。ログを検索した後、フラグ、特に-fprofile-instr-generateで奇妙な動作があるようです。ソリューションは、ライブラリプロジェクトのビルド設定で[コードカバレッジを有効にする]フラグを[いいえ]に設定することでした。これは暗闇の中で撮影していましたが、どういうわけか機能しました。
同様の問題が発生しました。誰にも役立つ場合に備えて、ここに投稿してください。
アプリのObjective-cクラスのフレームワーク(Swift 3および自分で作成)のクラスAbcService)を使用していたB. Xcode8/Swift3からXcode9/Swift4にアップグレードした後、リンク中のこのクラスのUndefined symbols
エラーのため、release configのアーカイブの構築に失敗しました。
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$__TtC15XxxabcServices17AbcService", referenced from:
奇妙なことに、debug configをアーカイブし、エミュレーターで実行するためにうまく機能しました。
根本原因を見つけるためにほぼ1日費やしました:フレームワークのSwift classAbcServiceが欠落していました- public
修飾子。
ここでの簡単なトリック:移動->フォルダ "/ Library/Developer/Xcode"に移動派生データを削除し、次にプロジェクトをクリーンにしてから実行します。
Cocoapodsを使用しているので、おそらくそれらを更新する必要があります。
つまり、pod update
プロジェクトのディレクトリ内のコマンドラインで、Xcodeでプロジェクトを再構築します。
一般に、Xcodeの新しいメジャーバージョンを使用する場合、すべてのコンポーネントを再構築する必要があります。エラーメッセージは、あなたがすでに持っているオブジェクトファイル(* .oファイルは基本的にコンパイラがソースファイルから生成するものです)が新しくコンパイルされたオブジェクトファイルと互換性がないことを伝えています(あなたのケースで不平を言っているリンカはすべてのオブジェクトファイルを結合または「リンク」する目的)。
派生データ(Xcodeのキャッシュなど)を消去する必要がある場合があります。これを行うには、XcodeのProduct
メニューに移動し、Option/Altキーを押しながら、メニュー項目「クリーンビルドフォルダー」を選択します。