開発環境
> xcodebuild -version Xcode 13.3 Build version 13E113
エラー
Undefined symbols for architecture x86_64: "SampleModule.SampleModule.init() -> SampleModule.SampleModule", referenced from: Test20220519.ViewController.viewDidLoad() -> () in ViewController.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
エラー再現手順
- XcodeのProject内にPackageを追加
- Project側で1で追加したPackageの処理を利用
- Project実行時に「ld: symbol(s) not found for architecture x86_64」が発生
1. XcodeのProject内にPackageを追加
2. Project側で1で追加したPackageの処理を利用
Package側
public struct SampleModule { public private(set) var text = "Hello, World!" public init() { } }
Project側
import UIKit import SampleModule final class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() print(SampleModule().text) } }
この時点でコード補完は効く。
3. Project実行時に「ld: symbol(s) not found for architecture x86_64」が発生
Undefined symbols for architecture x86_64: "SampleModule.SampleModule.init() -> SampleModule.SampleModule", referenced from: Test20220519.ViewController.viewDidLoad() -> () in ViewController.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
対応方法
XcodeのTARGETS > Frameworks, Libraries, and Embedded ContentにPackageを追加する。
追加された状態になるとProjectの実行が成功する。