Android NDK Include Eigen

Android NDK Include Eigen

本文关键字:Eigen Include NDK Android      更新时间:2023-10-16

我正试图将Eigen3库包含在Android项目中,以便我可以在本机代码中做一些矩阵数学。

当我编译我的项目时,它报错:

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

No dice though.

添加/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>

是否有一种方法来包括Eigen和解决这些问题,而不是逐步添加大多数我的机器的头?

解决了上述问题!

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

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

    APP_STL:=stlport_static
    
  3. 如果你遇到一个shared_ptr错误,尝试使用APP_STL := gnustl_static代替