Удалите функции исключения / отмены из общих объектов Android NDK

Независимо от того, что я пытаюсь, например, добавление флагов компилятора -fno-exceptions -fno-rttiЯ всегда получаю эти функции обработки исключений в моих общих объектах:

Образ

Это происходит независимо от того, компилируюсь ли я как C или C++.

Это происходит с этими включениями (скомпилирован как C++ - не пытался скомпилировать как C):

#include <jni.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>

Вот все мои включения для того, что я скомпилировал как для C, так и для C++ (большинство / все они не нужны для возникновения проблемы):

#include <jni.h>

#ifndef __cplusplus
#include <stdbool.h>
#endif

#include <math.h>

#ifdef __ANDROID__
#include <GLES2/gl2.h>
#else
#error "No graphics implementation for the target platform"
#endif

#ifdef __ANDROID__
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include <pthread.h>
#include <android/asset_manager.h>
#include <android/asset_manager_jni.h>
#else
#error "No audio implementation for the target platform"
#endif

#include <time.h>
typedef struct timespec timespec;

// for malloc, free and memset
#include <stdlib.h>
#include <string.h>

Как я могу избавиться от этих функций обработки исключений раз и навсегда? Цепочка инструментов NDK переопределяет где-нибудь мои флаги компилятора?

1 ответ

Скорее всего, это связано с тем, что вы ссылаетесь на статический C++ STL. Даже если ваш модуль не использует исключения, STL обычно используют (STD NDK не имеют -fno-exceptions вариант).

Другие вопросы по тегам