注:明らかにStackOverflowの繰り返しの質問ですが、-私が見たところでは、人々は方法を見つけられないか、彼らの解決策は私のために機能しません
Eclipse Juno ADTを使用しています。 NDKを更新しようとするまで、すべてが正常に機能していました。 ndk
フォルダー(ndk-r8d
)を新しいバージョン(つまりndk-r8e
)に置き換え、Paths and Symbols
構成でインクルードをg ++ 4.6から4.7に変更しました。
インデックスが壊れているようです:コードをコンパイルできましたが、Eclipseは[ 1 ]および[ 2 ].エラーmainlyは、distance
、pt
、queryIdx
などのOpenCV4Androidで使用されるシンボルから発生します。およびtrainIdx
。
古い構成にバックアップしようとしても、インデックスは壊れていました!これを変更する方法を見つけることができません。
trainIdx
などのシンボルがOpenCV4Androidにのみ表示されることをPaths and Symbols
セクションに含めることを確認します。Paths and Symbols
セクションのインクルードの順序を変更します。基本的に、OpenCVインクルードを最初と最後に配置しようとしました。私はそれが次の理由でCDTインデックスであると仮定します:
ndk-build clean
とndk-build
を使用してプロジェクトをビルドできます。jni
フォルダーから)C++ファイルを開くまでエラーが発生しません。Field '<name>' could not be resolved.
が多いため、アプリケーションを実行できなくなります。次のコードは、line
、queryIdx
、pt
のエラーを報告します。
cv::line(mRgb, keypointsA[matches[i].queryIdx].pt, keypointsB[matches[i].trainIdx].pt, cv::Scalar(255, 0, 0, 255), 1, 8, 0);
次のように書くと、うまくいきます:
cv::DMatch tmpMatch = matches[i];
cv::KeyPoint queryKp = keypointsA[tmpMatch.queryIdx];
cv::KeyPoint trainKp = keypointsB[tmpMatch.trainIdx];
cv::line(mRgb, queryKp.pt, trainKp.pt, cv::Scalar(255, 0, 0, 255), 1, 8, 0);
すべてのOpenCV関数が解決されないわけではありません。pt
、queryIdx
、およびtrainIdx
のみが解決されます。
コメントは大歓迎です。
Eclipse環境内の選択したプロジェクト設定で、C/C++全般->コード分析->起動に進みます。両方のチェックボックスがオフになっていることを確認してください。プロジェクトを閉じて再度開くか、Eclipseを再起動してプロジェクトを再構築します。
実際に問題が何であるかを言うのは非常に難しいです。ここにいくつかのアドバイスがあります:
hello-jni
(jni
のsamples
フォルダーにあります)。問題なく実行される場合、問題はOpenCVをプロジェクトにリンクすることです。Android-ndk
場所project properties -> c/c++ build -> environment
。ここに問題へのリンクがあります ビルドの問題Android NDKプロジェクト 。ndk-build -B
)、Eclipseのすべてのエラーを手動で削除します(Problems
ビューですべてのエラーを選択してクリックするだけです) delete)そして今すぐプロジェクトを実行してみてください。この「ハック」は、プロジェクトの実行に役立つ場合があります。path-to-your-workspace/.metadata/.plugins/org.Eclipse.cdt.core
(最初にバックアップします)。多くの人と同じように、私も同じ問題を抱えていました。
AyberkÖzgürの投稿の手順に従いましたが、これは理にかなっています。また、3つの言語すべてにインクルードを含める必要がありました:GNU C、GNU C++、and Assembly。スタンドアロンツールチェーン。
私は最初にGNU CおよびGNU C++言語。未解決のインクルードエラーが残っていました。アセンブラー言語もエラーがなくなりました。
Eclipseが私のプロジェクトに含まれているAssemblerを検索するだけの理由はわかりません。また、ソリューションのこの部分がより複雑なプロジェクトでどのように機能するかわかりません。
お役に立てれば。
同じ問題がありました。すべての適切なインクルードパスのセットアップがありましたが、.c/.cppまたは.hファイルを開くと、すべてが「未解決」としてマークされ始めました。
これは私のために働いた...
に移動:
環境設定-> C/C++->インデクサー
チェックエディターで開いているインデックスソースとヘッダーファイル。
Eclipse CDTがOpenCVライブラリと連携して、同様の状況が発生しました。プログラムが正しくコンパイルされている間に、いくつかのエラーメッセージが表示されました。 「window-> preferences-> Indexer」「indexerのビルド構成」ボックスのインデクサー設定を「アクティブ構成を使用」に変更して、問題を解決しました。
このEclipse NDKのインデックス作成の問題に頭を打つのに約3時間かかりました!..
何が機能したのか: Your-Application.mkファイルで1つのCPUアーキテクチャのみが指定されていることを確認してください。
そうしないと、.metadata/.plugins/com.Android.ide.Eclipse.ndk/*。pathInfoファイルはNDKビルドによって生成されません。このファイルには、Project-> Properties-> C/C++ General-> Paths and Symbols-> Includesの組み込み値が含まれています(.pathInfoファイルを作成しても問題は修正されません)
[設定]> [C/C++]> [言語マッピング]> [追加]に移動します(ソースCファイルを選択し、GNU C)を選択します)