编辑1: 如您所见,Eigen库已被包含,但是当我编译项目时出现了许多错误,我不知道为什么。有任何想法吗?
最终我达成了目标,在Android中使用Eigen。如果你正在尝试在Android中使用Eigen库,希望这篇文章能对你有所帮助:
../app/src/main/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;
}
在我的情况下,我不需要编译任何东西,只需使用官方Eigen库的头文件即可。
从https://github.com/eigenteam/eigen-git-mirror克隆Eigen git存储库,例如到ThirdParty / eigen
将Eigen简单地添加到构建过程中,例如添加到您的根CMakeLists.txt
add_subdirectory(ThirdParty/eigen)
然后使用它:
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
include_directories(src/main/cpp/Eigen/)Now
,现在Visual Studio可以“看到”Eigen的包含文件了,但是项目无法编译(请参见编辑部分)。 - edusan1213