AndroidNDKのUnresolved inclusionへの対処
TIPS本を進めていますが、いきなりつまづきました。
Eclipse上でcファイルを編集していると#include の行で「Unresolved inclusion」と表示され、入力補完も動作しません。
Eclipseのエディタがcの文法に対応していないのかと「CDT」をインストールしようとしたところ、すでにインストール済だと表示されました。
次にエラーメッセージから考えると、パスが通っていないのだろうなと思いました。
しかしEclipseに詳しいわけではないので、パスの通し方がよく分かりません。
google先生に助けを求めると、下記リンク先で同じような問題に悩んでいる人がいました。
c - unresolved inclusion in the java header in JNI - Stack Overflow
それによると、
(1) [ファイル]-[新規]-[その他]-[C/C++]-C/C++プロジェクトに変換
(2) [プロジェクト]-[プロパティ]-[C/C++ 一般]-[パスおよびシンボル]のインクルードタブの言語「GNU C」および「GNU C++」において「{NDKのホームパス}\platforms\android-{SDKminVersion}\arch-arm\usr\include」というパスを追加
とすると解決できるとありました。
実際にやってみると、エディタ上で確かにエラーが出なくなりNDK関連のAPIに関しても補完できるようになりました。
しかし今度はビルドが通らなくなってしまいました。 原因を調べるとツールチェインが問題となっているようです。
(1) [プロジェクト]-[プロパティ]-[C/C++ ビルド]-[ツールチェインエディタ]で現在のビルダーをAndroid Builderに変更
(2) [プロジェクト]-[プロパティ]-[C/C++ ビルド]のビルダー設定で自動的にMakefileを生成チェックを外して、cygwin上でndk-buildしているパスをビルドディレクトリーに設定
以上の処理でビルドが通るようになりました。
Makefileを自分で作成している場合は、そのディレクトリでビルドさせましょうということなのでしょう。