现在有一个DNK开发的so文件,我想在Linux下的C语言调用这个so文件,但是总是提示:[root@PCGiter Code]# gcc SoTest2.c -o SoTest2.exe -ldl
[root@PCGiter Code]# ./SoTest2.exe
Open Error:libcom_wuba_aes_ExecV3_1_0.so: cannot open shared object file: No such file or directory.

解决方案 »

  1.   

    不知道怎么调用,只知道java调so文件
      

  2.   


    那在Linux下能直接调用DNK的so吗?或者怎样可以不在android的环境下直接调用DML的so文件呢?
      

  3.   

    No such file or directory这不是找不到文件么,检查下路径先
      

  4.   


    ldconfig -p输出的列表中已经有了呀我怀疑是不是NDK的so根本不能被linux调用???
      

  5.   

    前几天在做JVM 动态库,ndk编译出的东西。虽然同是x86,但是文件信息有区别,JVM就不加载,参考下
      

  6.   

    这个回答是关于如何在Android中创建executables并且在shell中执行,而不是如何在linux中执行executables 。
    使用Android-ndk创建源文件,然后直接复制到仿真器中,再在adb shell中执行。
    以下的例子是创建一个executable。# For building the Test executable
    LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Linker flags
    LOCAL_LDLIBS += -llog
    LOCAL_LDLIBS += -lOpenSLES
    LOCAL_LDLIBS += -landroid# Include paths
    LOCAL_C_INCLUDES := \
    $(LOCAL_PATH) # Local C Flags if any
    LOCAL_CFLAGS := # Source Files to compile
    LOCAL_SRC_FILES := \# Shared libraries to be used while linking
    LOCAL_SHARED_LIBRARIES := # Local module name
    LOCAL_MODULE := include $(BUILD_EXECUTABLE)你可以在模拟器shell通过启动仿真器,然后在命令提示符”adb shell”中执行命令。
    我发现只有当我复制到 /data/ folder里面才能够执行。其他文件夹如/ mnt / sdcard不能够执行 executable。 
      

  7.   

    android打错了,ndk打错了。。楼主
      

  8.   

    明显不能使用啊,源代码格式都不同,源代码定义是根据java的文件名,包名,函数名来定义的。linux环境下,除非还是给android使用
      

  9.   

    .so文件啊,目前情况下不可能直接调用的.首先编译器编译出来的.so库都是针对特定CPU架构的,以目前使用最广泛的PC和移动平台CPU为例,x86和arm指令集就不一样,生成的二进制文件没法在二进制级兼容;如果真的解决了上面这个问题,其次还要看你的.so库使用的Linux和Android系统的API是否兼容.如果第二个问题也解决了,再去讨论应用层面的问题.真想用的话,重新编译吧.