Undefined symbols for architecture x86の原因

目次

  • 経緯
  • 原因

 

一、経緯

 Windowsで開発したプロジェクトをXcodeでビルドする時に発生(Windowsでは問題なかった)。

 ログを確認すると未定義とされている箇所はごく最近に追加した部分である(追加する前には問題なくコンパイルを通っていた)。

 その部分について、ちゃんとインクルードされているのかを確認したら、Xcode側のプロジェクトに新規実装したファイルを導入していないことを判明(実にバカのミス)。

 Xcodeのプロジェクトに新規追加したファイルを導入したら、エラーが消失して問題解決。めでたしめでたし。

 

二、原因

 そもそも、Undefined symbols for architecture x86が起きる原因は、ソース内で使用されている関数やグローバル変数の定義が見つからないことにある。

 今回はXcodeのプロジェクトに新規追加したファイルを導入していないので、その部分の関数を呼び出すと、関数が見つからずエラーになった。

 

 Undefined symbols for architecture x86になり得る原因は他にもいくつかある。

 こちらのサイトにて詳しく書かれているので、必要な方は参照してください(筆者も大変助かった)

Undefined symbols for architecture x86_64:の原因(複数) | MaryCore

 原因になり得るのは、以下になる。

  • 関数名が間違っている
  • 関数が定義されていない
  • ヘッダーファイルがインクルートされていない
  • 外部ライブラリーがリンク出来ていない
  • c言語c++のファイルが混在している
  • テンプレートの実態は存在しない

 以上。