2012-02-06

XcodeでC++ライブラリを使うには...

Xcodeで外部のC++のライブラリを使うときにハマったのでメモです。
C++ライブラリを使うために、自前のObjective-C(.m)ファイルからライブラリのヘッダーファイルをimportしたら、ヘッダーファイルに記載されているnamespaceでUnknown typeのエラーがでてしまいました。

理由はごく簡単でObjective-CはCであってC++ではないので、そのままC++の.hをimportするとその.hも問答無用(たとえFileTypeの指定をC++ headerにしても)にCと解釈されてしまうから。なので、namespaceなんてC++な言語を使うとエラーがでてしまうわけです。

回避方法は呼び出し側もC++になれば解決します。ファイル名を.mから.mmにすればFileTypeが自動でObjective-C++になります。.mのままでもFileTypeは変更できてビルドもできるのですが、Xcodeの不具合なのかエラーの表示だけはでたままになります(ビルドはできるのに...)。気持ち悪いので、.mmにするのが良いのでしょう。

No comments:

Post a Comment