gpt4 book ai didi

java - JNI 应用程序出错

转载 作者:太空宇宙 更新时间:2023-11-04 13:32:28 24 4
gpt4 key购买 nike

我已经为 app 和 java app app 编译了 .so 库,用于从该库调用方法。为 ARMv7 编译的库和应用程序在真实设备 (Nexus 4) 上运行良好。当我尝试在模拟器上启动此应用程序时,出现下一个错误:

dlopen("/data/app-lib/com.opendesign.android-2/test_jni.so") failed: dlopen failed: cannot locate symbol "srand" referenced by "test_jni.so"...
WARNING: Could not load test*_jni.so

对于加载库,我有下一个代码:

try {
System.loadLibrary("test_architecture_jni");
} catch (UnsatisfiedLinkError use) {
try {
System.loadLibrary("test_jni");
} catch (UnsatisfiedLinkError use1) {
Log.e("JNI", "WARNING: Could not load test*_jni.so");
}

在 Eclipse 中开发的 Android 应用程序。在根目录中,我有“libs”目录,其中包含架构名称的文件夹。

在真实设备上工作正常,但在该设备的模拟器上 - 崩溃。NDK - 10c,设备上的 Android - 5,模拟器上 - 4.2.2,Android 应用程序的 minSdkVersion = 8。

P.S使用下一个配置文件编译lib:

mkdir -p Platforms/android_armeabi-v7a_r10c_mingw_x64dbg
export ANDROID_NDK_ROOT="/opt/android-ndk-r10c"
export ANDROID_NDK_BIN="toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin"
echo -e "all:\n\tcd Platforms/android_armeabi-v7a_r10c_mingw_x64dbg && make all\nclean:\n\tcd Platforms/android_armeabi-v7a_r10c_mingw_x64dbg && make clean\n" > Makefile
cd Platforms/android_armeabi-v7a_r10c_mingw_x64dbg
../../build/cmake/bin/cmake -G "Unix Makefiles" -D ODA_HAS_OPENGL=1 -D ODA_OPENGL_LIBS="GLESv1_CM" -D CMAKE_CXX_COMPILER_WORKS:INTERNAL=1 -D CMAKE_C_COMPILER_WORKS:INTERNAL=1 -D CMAKE_DETERMINE_CXX_ABI_COMPILED:INTERNAL=1 -D CMAKE_DETERMINE_C_ABI_COMPILED:INTERNAL=1 -D CMAKE_SYSTEM_NAME:STRING=gcc -D CMAKE_CROSSCOMPILING:INTERNAL=1 -D ODA_PLATFORM_LIBS:STRING="c;m;dl;gnustl_static" -D ODA_ANDROID_ARCH:STRING="armeabi-v7a" -D CMAKE_REQUIRED_LIBRARIES="-lc -lgnustl_static" -D CMAKE_CXX_STANDARD_LIBRARIES="-lc -lgnustl_static" -D ANDROID=TRUE -D ANDROID_NDK_CRYSTAX=FALSE -D ANDROID_NDK_GOOGLE=TRUE -D CMAKE_CXX_FLAGS:STRING="--sysroot=${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_PLATFORM}/arch-arm/ -Wno-psabi -fPIC -DANDROID_WCHAR -DANDROID_GOOGLE -DANDROID -DANDROID_NDK_NATIVE -I${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_PLATFORM}/arch-arm/usr/include -I${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.8/include -I${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I. -ffunction-sections -fexceptions -frtti -Wno-psabi -fPIC -Wl,--no-undefined" -D CMAKE_C_FLAGS:STRING="--sysroot=${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_PLATFORM}/arch-arm/ -Wno-psabi -DANDROID_WCHAR -DANDROID_GOOGLE -DANDROID -DANDROID_NDK_NATIVE -I${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_PLATFORM}/arch-arm/usr/include -ffunction-sections -fPIC -Wl,--no-undefined" -D CMAKE_CXX_COMPILER:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-g++.exe -D CMAKE_C_COMPILER:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-gcc.exe -D CMAKE_SHARED_LINKER_FLAGS:STRING="-L${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a -L${ANDROID_NDK_ROOT}/sources/libs/armeabi-v7a -L${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_PLATFORM}/arch-arm/usr/lib -Wl,-no-undefined,-dynamic-linker=/system/bin/linker,-rpath-link=${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_PLATFORM}/arch-arm/usr/lib -Wl,--no-undefined" -D CMAKE_AR:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-ar.exe -D CMAKE_LINKER:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-ld.exe -D CMAKE_LD:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-ld.exe -D CMAKE_NM:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-nm.exe -D CMAKE_OBJCOPY:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-objcopy.exe -D CMAKE_OBJDUMP:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-objdump.exe -D CMAKE_STRIP:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-strip.exe -D CMAKE_RANLIB:PATH=${ANDROID_NDK_ROOT}/${ANDROID_NDK_BIN}/arm-linux-androideabi-ranlib.exe -D CMAKE_MAKE_PROGRAM:PATH=/usr/bin/make -D CMAKE_LIB_PATH="${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_PLATFORM}/arch-arm/usr/lib" -D CMAKE_BUILD_TYPE=Debug -D CMAKE_CONFIGURATION_TYPES=Debug ../../

最佳答案

获取错误,因为模拟器使用x86架构。使用 x86 的 lib,工作正常

关于java - JNI 应用程序出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32034754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com