我需要在我的Android Studio项目中包含Eigen库来执行一些线性代数操作,并使用我为桌面开发的一些C ++代码。我一直在寻找有关这个主题的信息,但没有太多,我是Android NDK的新手。特征库不需要编译,所以我认为这很容易,但我遗漏了一些东西。我试图将Eigen文件夹(包含所有包含的文件)复制到NDK文件夹(.. \ Android \ Sdk \ ndk-bundle \ sysroot \ usr \ include)中,其中还有其他外部库(例如GLES)但是Android Studio无法检测到它。我该怎么做??提前谢谢,我真的需要这个。
答案 0 :(得分:4)
最后,我达到了我的目标,我正在使用Android中的Eigen。如果您想在Android中使用Eigen库,我希望这可以帮助您:
../应用程序/ SRC /主/ CPP
include_directories(src/main/cpp/Eigen)
在您的cpp文件中包含Eigen标头并正常使用它们。例如:
#include "Eigen/Dense"
void multiply2Matrices(){
Eigen::MatrixXd M(2,2);
Eigen::MatrixXd V(2,2);
for (int i = 0; i<=1; i++){
for (int j = 0; j<=1; j++){
M(i,j) = 1;
V(i,j) = 2;
}
}
Eigen::MatrixXd Result = M*V;
}
在我的情况下,我没有编译任何东西,jus使用官方Eigen库的头文件
答案 1 :(得分:0)
将本征git repo从https://github.com/eigenteam/eigen-git-mirror克隆到ThirdParty / eigen
只需添加Eigen即可构建过程,例如到您的根CMakeLists.txt
add_subdirectory(第三方/特征)
并使用它:
add_library($ {PROJECT_NAME} SHARED src / test_eigen.cpp)
target_link_libraries($ {PROJECT_NAME} Eigen3 :: Eigen)
因此,Android NDK的用法没什么特别的,只需将Eigen内容包括在本机构建中即可。 测试期间发生的一些问题使我不得不关闭一些Eigen东西,例如ThirdParty / eigen / CMakeLists.txt中的doc目标编译,因为它与我的项目中已经存在的目标相矛盾:
if(NOT ANDROID)
add_subdirectory(doc EXCLUDE_FROM_ALL)
endif()
完整的用法示例可以在这里找到:https://github.com/nkh-lab/ndk-eigen-hello-world