Android/NDK混合プロジェクトでEclipseIndigoを使用しています。C ++の性質を追加しましたが、ほとんどすべてが機能しています。自動ビルドは機能します。つまり、ファイルを編集すると、ndk-buildが呼び出され、正常に完了します。ビルドエラーは発生しません。マウスオーバーコードアシストが機能します(関数に関する情報が表示された小さなウィンドウがポップアップ表示されます)。インクルード行にカーソルを置いてF3キーを押すと、関連するヘッダーファイルが開きます(構成に基づいて予想されるファイルではなく、関連するヘッダーファイル-おそらく手がかりですか?)。
.cppファイルで次の行を選択すると、$ NDKROOT / platform / android-3 / arch-arm / usr / include/ctype.hが開きます。
#include <ctype.h>
(isdigitはこのファイルで定義されています)
ただし、Eclipseはisdigitが定義されていないと主張しています。静的アナライザーまたはインデクサーのいずれかが原因であることを示唆する多くの投稿を読みましたが、提案された解決策の多くを試しましたが、役に立ちませんでした。
次のような行を追加すると、エラーがなくなり、関数のマウスオーバーコードアシストが機能します。
extern int isdigit(int);
繰り返しますが、これはリンカーエラーやコンパイラエラーではありません。ndk-buildはエラーなしで完了します。これは日食の中の何かです。ご覧いただきありがとうございます!
編集:私は今、これがコード分析の問題であると信じています。より良い解決策は、コード分析オプションを編集して、「関数を解決できませんでした」をエラーではなく警告にすることです。そうすれば、問題ビューで警告を確認できますが、引き続き機能します。関数が本当に欠落している場合、コンパイラはあなたに教えてくれます!また、すべての「欠落している」関数がシンボリックリンクされたインクルードファイルにあるため、問題はシンボリックリンクに続くコードアナライザーにあるという新しい理論があります。この理論に関する意見をお聞かせください。