我正在尝试将WebRTC的一些功能构建到一个项目中。我们之前已经有了一些只运行C语言的代码,我正在尝试添加更多的文件。新文件是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构建
可能使用了错误的STL头目录:
... -I${NDK_ROOT}/sources/cxx-stl/system/include ...
但我已经定义了
应用程序
像
c++_shared
,我
认为
应该在另一个目录中查找。