Что мне нужно сделать, чтобы собрать (части) WebRTC для Android (NDK)?Не может найти заголовки C ++ - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь встроить некоторые функции WebRTC в проект.Ранее мы уже работали с кодом C-only, и я пытаюсь добавить больше файлов.Новые файлы - C ++, и когда я запускаю ndk-build, я получаю ошибки, связанные с C ++, включают:

[armeabi] Compile++ thumb: zello.webrtc <= audio_frame.cc
In file included from libwebrtc/jni/libwebrtc/api/audio/audio_frame.cc:15:
libwebrtc/jni/libwebrtc/rtc_base/checks.h:36:10: fatal error: 
  'sstream' file not found
#include <sstream>
         ^~~~~~~~~
1 error generated.

Мои Application.mk файлы включают в себя

APP_ABI := armeabi armeabi-v7a arm64-v8a x86 x86_64
APP_OPTIM := release
APP_PLATFORM := android-15
APP_STL := c++_shared
APP_CPPFLAGS := -fexceptions
NDK_TOOLCHAIN_VERSION := clang

и моиAndroid.mk файл включает в себя

LOCAL_CPPFLAGS := -std=c++11
LOCAL_CPP_EXTENSION := .cpp .cc
LOCAL_SRC_FILES := \
    webrtc-jni.cpp \
    libwebrtc/api/audio/audio_frame.cc \
    ...

Я пытался явно добавить

LOCAL_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include

, но это просто приводит к большему количеству ошибок в отношении неопределенных функций, и не кажется, что это необходимона первом месте.Я также попытался указать все другие значения для APP_STL безрезультатно.

Я строю с NDK 16b, так как нам все еще нужно поддерживать armeabi устройства.

Спасибо взаранее за любые предложения.

РЕДАКТИРОВАТЬ: Когда я запускаю ndk-build V=1, я вижу, что ndk-build, вероятно, использует неправильный каталог заголовка STL:

... -I${NDK_ROOT}/sources/cxx-stl/system/include ...

, но я определил APP_STL as c++_shared, который я думаю, должен искать в другом каталоге.

1 Ответ

0 голосов
/ 22 мая 2018

Решением было поместить определение APP_STL в файл верхнего уровня Application.mk.Наше приложение структурировано как

top/Application.mk
top/Android.mk
top/...
top/submodule1/jni/Application.mk
top/submodule1/jni/Android.mk
top/submodule1/jni/...
top/submodule2/jni/Application.mk
top/submodule2/jni/Android.mk
top/submodule2/jni/...
...

Я определил APP_STL в одном из файлов субмодуля Application.mk, которые могли быть полностью проигнорированы?При перемещении определения в файл верхнего уровня сборка работает правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...