Я получил ошибку завершения _GLIBCXX_PERMIT_BACKWARD_HASH на Android NDK при использовании hash_map - PullRequest
4 голосов
/ 08 марта 2012

Я портирую свой проект cocos2d-x с win32 на android. Я использовал hash_map, и это вызывает много проблем.

Я погуглил, что мне нужно включить его из разных источников на Android NDK и win32, например:

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

но все же, когда я компилирую на NDK r7b, я получаю ошибку компиляции:

D: / Разработчик / 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

Как я могу решить эту проблему?

Ответы [ 3 ]

4 голосов
/ 06 февраля 2013

добавить макрос в файл Android.mk

LOCAL_CFLAGS    :=  -D_GLIBCXX_PERMIT_BACKWARD_HASH 
0 голосов
/ 15 марта 2013

Местным решением является #include <backward/hash_map> вместо #include <ext/hash_map>

Я только что добавил это в Google как Выпуск 53404 , и лучшее решение, которое я вижу, включает редактирование вашего NDK:

Редактировать sources/cxx-stl/gnu-libstdc++/Android.mk, найти строку gnustl_exported_c_includes и добавить:

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

Таким образом, пути включения, используемые NDK, совпадают с путями, используемыми g ++ в его обычной конфигурации.

Редактировать: Google применил это исправление вверх по течению; это исправление было выпущено в Android NDK, редакция 9 в июле 2013 года.

0 голосов
/ 24 августа 2012

Немного отложенного ответа, но здесь есть решение для других, у которых есть эта проблема. Вам просто нужно исправить путь. Отредактируйте файл gnu-libstdc ++ / include / ext / hash_map и внесите следующие изменения. Теперь он будет правильно отображать предупреждение о сборке, а не выходить с ошибкой отсутствующего файла.

Изменение:

#include "backward_warning.h"

Кому:

#include "../backward/backward_warning.h"
...