4

cocos2d-x プロジェクトを win32 から android に移植中です。私は hash_map を使用してきましたが、現在多くの問題を引き起こしています。

次のように、Android NDK と win32 のさまざまなソースからそれを含める必要があることをグーグルで検索しました。

#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif

それでも、NDK r7b でコンパイルすると、コンパイル エラーが発生しました。

D:/Developer/Android/android-ndk-r7b/sources/cxx-stl/gnu-libstdc++/include/ext/hash_map:60:30: エラー: backward_warning.h: そのようなファイルまたはディレクトリはありません

backward_warning.h ファイルをインクルードすると失敗する

#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH
#include "backward_warning.h"
#endif

どうすればこれを解決できますか?

4

3 に答える 3

4

Android.mk ファイルにマクロを追加します

LOCAL_CFLAGS    :=  -D_GLIBCXX_PERMIT_BACKWARD_HASH 
于 2013-02-06T07:37:03.617 に答える
0

ローカルソリューションは、#include <backward/hash_map>代わりに #include <ext/hash_map>

問題 53404としてこれを Google にバグ報告しました。私が見ることができる最善の解決策は、NDK を編集することです。

を編集し、次sources/cxx-stl/gnu-libstdc++/Android.mkの行を見つけてgnustl_exported_c_includes追加します。

$(LOCAL_PATH)/$(TOOLCHAIN_VERSION)/include/backward

これにより、NDK で使用されるインクルード パスが、通常の構成で g++ で使用されるものと一致します。

編集: Google はこの修正をアップストリームに適用しました。この修正は、2013 年 7 月に「Android NDK、リビジョン 9」でリリースされました。

于 2013-03-15T12:25:30.693 に答える
0

少し遅れた答えですが、これはこの問題を抱えている他の人のための解決策です. パスを修正するだけです。gnu-libstdc++/include/ext/hash_map ファイルを編集して、次の変更を行います。ファイルが見つからないというエラーで終了するのではなく、ビルドの警告が正しく表示されるようになりました。

変化する:

#include "backward_warning.h"

に:

#include "../backward/backward_warning.h"
于 2012-08-24T06:54:52.030 に答える