2015-07-29 4 views
0

Я пытаюсь включить библиотеку Eigen3 в проект Android, поэтому я могу сделать математику Matrix в собственном коде.Android NDK Include Eigen

Когда я составляю мой проект жалуется:

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. 

Я думал, что, может быть, в том числе СТЛ бы помочь, так что у меня есть 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> 

Есть ли способ включить Эйген и решить эти другие, чем постепенно добавляя большинство заголовков моей машины проблем?

+0

какая версия является вашим gcc-компилятором? – nkcode

+0

@nkcode: У меня есть 'gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2' и' NDK r10e-rc4 (64-разрядный) '. – Richard

+1

_ "Добавление /usr/include/c++/4.9.2/ к моему LOCAL_C_INCLUDES" _ Вам следует добавить каталог include из вашей установки NDK; а не каталог include вашего компилятора хоста. – Michael

ответ

1

Следующее решение вышеупомянутой проблемы!

  1. Создайте файл с именем Application.mk в каталоге projet_dir/jni/ (так projet_dir/jni/Application.mk).

  2. Добавьте следующую строку в этот файл

    APP_STL:=stlport_static 
    
  3. Если вы столкнулись с ошибкой shared_ptr, попробуйте использовать вместо APP_STL := gnustl_static.