1
0

More than 3 years have passed since last update.

あるFrameworksを追加したら「1 duplicate symbol for architecture arm64」エラーが出た時の対応方法

Last updated at Posted at 2019-11-19

はじめに

BLE通信対応の機器との接続処理を追加する為に、
提供されたFrameworksを追加したら「1 duplicate symbol for architecture arm64」エラーが発生した。

ググってみた

「duplicate symbol for architecture」にヒットするサイトがいくつか出てきたが、
何となく違う感じがしたので自分で考える事に…

エラー内容をよく見てみる

エラー内容
duplicate symbol 'Framneworks名' in:
/XXXXXX/○○ViewController.o
/XXXXXX/□□ViewController.o
ld: 1 duplicate symbol for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

今回BLE機器と通信する為に手を入れたViewControllerで重複が発生しているので心当たりが…

エラー原因たぶんこれ

それぞれのViewControllerで追加したFrameworksの定義や初期化をしてるのが多分ダメ

対応方法

△△AppDelegateクラスにFrameworksの定義と初期化処理を移動して1つにまとめて、
それぞれのViewControllerで使えるようにしたら、
エラーも無く無事動作しました。

まとめ

今回は片方のViewControllerにはじめ追加して接続や値の取得などの事前調査をしてからもう片方に処理を追加したが、その時にそのまま追加したのがそもそもの間違いだった。
ちゃんと設計してレビューする環境ならこんなことは発生しないと思われるが、
これ追加しとけって丸投げされるだけで設計もレビューもやらないからダメダメなんだな…

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0