NDK环境下使用的是.so库吧,还要知道相应的JNI接口。

解决方案 »

  1.   


    或者是.a静态库对吧?如果是,比如说库头文件为xxx.h,生成的静态库为xxx.a,那么:
    1、ndk工程中(比如我的是CSTest.cpp)需要#include xxx.h么?
    2、xxx.a放在什么位置下? NDK工程的jni目录下?
    3、我的Android.mk 如下面这么写对吗?LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
    LOCAL_MODULE    := xxx
    LOCAL_SRC_FILES := xxx.a   
    include $(PREBUILT_STATIC_LIBRARY)include $(CLEAR_VARS)
    LOCAL_MODULE    := CSTest
    LOCAL_SRC_FILES := CSTest.cpp
    LOCAL_STATIC_LIBRARIES := xxxinclude $(BUILD_SHARED_LIBRARY)
      

  2.   


    建议你去看一下 NDK 的文档, 在根目录下的 docs 目录下, NDK 中还有一些 示例代码, 建议你也去看看添加头文件 :
    直接把头文件拷贝到 jni 代码中即可, 在 Adroid.mk 中 LOCAL_EXPORT_C_INCLUDES := 头文件路径名 注明dll lib 库是 Windows 下的动态库 和 静态库 在 NDK 下不能用 
    x86 平台的 静态库 和 动态库 虽然也是 so 和 a 后缀, 但是 NDK 上也不能用, 必须是 交叉编译过的 库才行 
    注意 必须是 NDK 交叉编译过的, 使用其它交叉编译工具编译出来的 arm 平台的 库也不能使用NDK 下能够调用的 动态库 和 静态库 必须是 使用 ndk 交叉编译过的 .so 和 .a 文件 
      

  3.   

    现在存在这样一个问题:
    最终生成的xxx.so供Android调用,xxx.so引用了yyy.a静态库,xxx.so已经成功编译并生成,问题是yyy.a静态库需不需要和xxx.so一并发布呢(放在同一目录下)?windows下的lib是不需要的,不知道这个需要不需要?
      

  4.   

    由于联机测试可以跑起来,.so中的函数接口也都可以调用,但是接口函数中调用的yyy.a中的函数就是执行不成功,TM头疼死我了(用的是curl)
      

  5.   

    https://developer.android.com/tools/sdk/ndk/index.html#Installing
      

  6.   

    http://blog.csdn.net/lanhxg/article/details/38373985
    http://blog.csdn.net/lanhxg/article/details/38373943
    https://developer.android.com/tools/sdk/ndk/index.html#Installing 
      

  7.   

    嗯,跟Windows 静态lib是一样的用法,已经被编译到.so当中去了