3

Eclipse for Mac を使用してネイティブ アプリケーションを開発していますが、解決する std::string または std::map を取得できません。

NDK がそのままではうまく設定されていないことを処理するために、パスに多数のインクルード ディレクトリを追加する必要がありました。現在私は持っています

.../Development/android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.8/include
.../Development/android-ndk-r9/platforms/android-18/arch-arm/usr/include
.../vuforia-sdk-android-2-6-10/build/include
.../android-ndk-r9/sources/cxx-stl/system/include

C++ シンボル パスとして設定され、#include <string>正常に動作しているようです。ただし、 std::string へのすべての参照は解決されておらず、Eclipse は言う

タイプ 'std::string' を解決できませんでした。

私は Windows PC でビルドに成功したので、このコードがビルドされることを知っています。それはいくつかの説明の日食の問題です。これらのシンボルを解決するにはどうすればよいですか?

EDIT 1:私は内部を見てきましたが<string>、主に他のインクルードがたくさん含まれているようです#include <bits/c++config.h>. これらはすべて解決しているように見えますが、それらを見つけて、std::string実際にどこに住んでいるかを特定できるかどうかを確認します.

編集 2: は見つかりますstd::basic_stringが、std::string(まだ) 見つかりません。

EDIT 3:std::basic_string私のソースコードにも明らかに見えません。

4

1 に答える 1

1

これがあなたの答えになるかどうかはわかりません。私の経験は異なります。私は Windows を使用しており、C (C++ ではない) コードを動作させることだけを試みていました。しかし、まったく同じ問題に遭遇しました。そして、私のソリューションは、C++ でも機能するように見えます。私の知る限り、Mac の Eclipse/ADT は Windows の場合とほとんど同じです。したがって、ここでは問題になりません。誰が知っている、私は私のa--から話している可能性があります。

しかし、問題は 2 重に解決されていると思います。これが私がそれを解決した方法です。私はチュートリアルに従いました: http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

注意事項:

1) Eclipse/ADT for Android で開発する場合。Java での記述を前提としています。プロジェクトを「Mixed Java & C/C++」にする必要があります (チュートリアルの外でこれと呼ばれているのを見たことがありません、笑)

2)ndk-buildコマンドラインからはおそらく正常に動作するはずです(Eclipseでコンパイルできない場合でも)。

3) チュートリアルでは、C/C++ を認識させるように思われる 2 つのことは、「ステップ 5: C/C++ プロジェクトに変換する」とそれに続くステップ 6 ~ 8 (1 つの大きなステップのように見えます) です。

4) 手順 7 の [ビルド コマンド] の下。への完全なパス (スペースなし) を使用する必要がある場合がありますndk-build。(※Windowsの方はndk-build.cmdここに「 」を入力)

5) 手順 8 では、フル パスも含めます。スペースは使用しないでください。ただし、これは代わりに「GNC C++」のパスを入れる場所です。(これはあなたの解決策に対する私の推測です)

6) 他のすべてが失敗した場合... C で動作するはずです。ステップ 8 を正確に試し、C 構文のみを使用してください。なぜなら、この古いチュートリアル ( http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/ ) の冒頭で、NDK の限界について述べているからです。C++ の機能が制限されていると書かれています。そうでなければ、この 2 番目のチュートリアルはほとんど時代遅れのようです。Cygwin とコマンド ライン コンパイルはもう必要ありません。私の Eclipse インストールでは、すぐに使える C/C++ サポートがありました。ただし、そのすべてがまだ使用可能/有効です。

PT

(同様に、NDK のヘルプが必要な場合も同様です。また、[Eclipse] > [ウィンドウ] > [設定] > [Android] > [NDK] > [NDK の場所] に、NDK フォルダーへのスペースなしのフル パスが入力されていることを確認してください)

于 2014-02-03T23:51:53.660 に答える