附件可以传到CSDN资源上. 在把地址发过来估计下载方便些.

解决方案 »

  1.   

    下了,看了一下,你的laoli.h 和laoli.c是生成的.a文件,然后再用main.cc来生成so文件对吗?如果是这样的话应该是你的makefile写的不对
    ndk下面有个例子叫twolib,和你要实现的功能是一摸一样的,你可以看看
      

  2.   

    这个是twolib中的makefileLOCAL_PATH:= $(call my-dir)# first lib, which will be built statically
    #
    include $(CLEAR_VARS)LOCAL_MODULE    := libtwolib-first
    LOCAL_SRC_FILES := first.cinclude $(BUILD_STATIC_LIBRARY)
    #上面这几句就是用first.c生成的第一个静态库.a文件,注意最后一句话BUILD_STATIC_LIBRARY# second lib, which will depend on and include the first one
    #
    include $(CLEAR_VARS)LOCAL_MODULE    := libtwolib-second
    LOCAL_SRC_FILES := second.cLOCAL_STATIC_LIBRARIES := libtwolib-firstinclude $(BUILD_SHARED_LIBRARY)
    #这个就是第二个c文件,连接了第一步生成的静态库libtwolib-first.a,最后生成libtwolib-second.so
      

  3.   

    呵呵,回复好快,热心人真多啊。
    我在laoli目录下的Android.mk文件中最后一句是:include $(BUILD_STATIC_LIBRARY)
    second.c这里的Android.mk和我写的也差不多,唯一的区别可能就是LOCAL_STATIC_LIBRARIES后面静态库的名字前面是否有lib,这个有没有应该是一样的。如果有人能把我那个修改一下make过去,可能就知道原因在哪里了。
      

  4.   

    编译动态链接库的makefile  要显示的包含你的静态链接库
      

  5.   

    kenshintang1215正解。仔细看了看,发现我的.mk确有问题。
      

  6.   

    #ifdef __cplusplus
    extern "C" {
    #endif
    #include "laoli.h"
    #ifdef __cplusplus
    }
    #endif
      

  7.   

    在我的ndk编译了一下
    cc默认的是c++的编译器,调用c的库 要加上上面的宏。
    加了之后可以编译通过
      

  8.   

    如果没有libtwolib.a的源文件,只提供给一个libtwolib.a文件,怎么连接上啊?