Android NDK 包含自己的

Android NDK Include Eigen

我正在尝试将 Eigen3 库包含在 Android 项目中,这样我就可以在本机代码中进行一些 Matrix 数学运算。

当我编译我的项目时它抱怨:

In file included from jni/Eigen/Dense:1:0,
                 from jni/Ares.cpp:9:
jni/Eigen/Core:156:22: fatal error: functional: No such file or directory
 #include <functional>
                      ^
compilation terminated.

我认为包含 STL 可能会有帮助,所以我有一个 Application.mk 文件,如下所示:

APP_STL := gnustl_static

虽然没有骰子。

/usr/include/c++/4.9.2/ 添加到我的 LOCAL_C_INCLUDES 变量可以解决该错误,但会引发:

In file included from jni/Eigen/Core:152:0,
                 from jni/Eigen/Dense:1,
                 from jni/Ares.cpp:9:
/usr/include/c++/4.9.2/cstdlib:41:28: fatal error: bits/c++config.h: No such file or directory
 #include <bits/c++config.h>

除了逐步添加我机器的大部分 headers 之外,有没有办法包含 Eigen 并解决这些问题?

以下解决了上述问题!

  1. 在目录 projet_dir/jni/ 中创建一个名为 Application.mk 的文件(所以它是 projet_dir/jni/Application.mk)。

  2. 将以下行添加到该文件

    APP_STL:=stlport_static
    
  3. 如果您 运行 遇到 shared_ptr 错误,请尝试使用 APP_STL := gnustl_static