【发布时间】:2014-07-24 07:06:33
【问题描述】:
我在我的Android 应用程序中使用ndk-build 构建本机代码时出现namespace 错误。错误样本是
C:/adt-bundle-windows-x86/ndk/sources/cxx-stl/gnu-libstdc++/4.6/include/bits
/allocator.h:54:1: error: unknown type name 'namespace'
C:/adt-bundle-windows-x86/ndk/sources/cxx-stl/gnu-libstdc++/4.6/include/bits
/allocator.h:55:1: error: expected ',' or ';' before '{' token
对于OpenCV设置,我的Application.mk文件是
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi
APP_PLATFORM := android-10
这意味着我在编译本机代码时使用gnu-libstdc++。
我的jni.c 有c extension。那是我从我的第三方那里收到的,他们更喜欢.c extension,好像他们必须更改为.cpp extension,他们必须在其他库中进行很多更改。
到目前为止还可以,我为 OpenCV 进行了本地开发的所有项目设置,如果我这样做了ndk-build,我可以制作.so 库。
当我将OpenCV's 头文件#include <opencv2/contrib/detection_based_tracker.hpp> 包含到jni.c 中时,那些namespace error 的问题发生了,我得到了很多命名空间错误。如果我将 #include <opencv2/contrib/detection_based_tracker.hpp> 包含到 cpp 文件中,则不会出错。
我的问题是
(1)错误是因为在.c文件中使用了.hpp文件吗?
(2)如果我别无选择,必须使用那个 .c 文件,有没有办法消除这个错误? 谢谢
【问题讨论】:
标签: android c++ opencv android-ndk namespaces