Android ndk Android:无法加载库

Android ndk Android:无法加载库,android-ndk,Android Ndk,我正面临一个我不知道的局面。我试图测试一个方法,我已经在C++中实现,我用SWIG来生成包装器。编译后,当我试图运行应用程序时,我得到一个错误java.lang.unsatifiedlinkerror 它还指出 cannot load library:reloc_library[1311]:33 cannot locate '_Z13recognizeFacePKcS0_' ... 然后突然抛出异常 我尝试使用adb shell进行调试,并在正确的位置(data/data/com/mesh

我正面临一个我不知道的局面。我试图测试一个方法,我已经在C++中实现,我用SWIG来生成包装器。编译后,当我试图运行应用程序时,我得到一个错误
java.lang.unsatifiedlinkerror

它还指出

cannot load library:reloc_library[1311]:33
cannot locate '_Z13recognizeFacePKcS0_'
...  
然后突然抛出异常

我尝试使用adb shell进行调试,并在正确的位置(data/data/com/mesh/faceAuth/lib/libfaceAuth.so)找到了库,但它给出了相同的错误。我还从网站上读到,这和错误的STL实现有关,我对此一无所知。我将非常感谢你坦率的建议

问候,,
Mohammed。

根据您提供的信息,您试图加载的库需要在加载之前加载一些依赖项

例如:

System.loadLibrary("bullet");
System.loadLibrary("irrlicht");
System.loadLibrary("gamescript");

gamescript
library需要另外两个库才能加载。否则,它会给我和你提到的一样的错误。如果您可以将
.mk
文件的某些部分发布到此处以构建库,我可以进一步深入了解这个问题。

您的错误与STL无关


您可能在代码中引用了一个全局函数
::recognizeFace(char const*,char const*)
。也许,您定义了另一个函数,例如
recognizeFace(char*,char*)

LOCAL_PATH:=$(调用我的目录)include$(清除变量)OPENCV_摄像头模块:=off include../includeOpenCV.mk ifeq($(通配符$(OPENCV_mk PATH)),“”)#尝试从默认安装位置加载OPENCV.mk,包括$(工具链预构建根)/user/share/OpenCV/OpenCV.mk else include$(OpenCV_mk_PATH)endif LOCAL_ALLOW_UNDEFINED_符号:=true LOCAL_LDLIBS+=-llog-ldl LOCAL_C_include+=jni/faceAuth.h LOCAL_模块:=faceRec LOCAL_SRC_文件:=faceAuth.cpp gen/faceAuth wrap.cpp include$(构建共享_库)最新错误,未找到本机Lcom/android/faceAuth/core/faceAuthJNI;的实现;。init(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V