LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
  
  LOCAL_PRELINK_MODULE := false
  LOCAL_SRC_FILES := maxab.c
  LOCAL_MODULE := libmaxab
  include $(BUILD_SHARED_LIBRARY)
 
  include $(CLEAR_VARS)
  LOCAL_SRC_FILES := test.c
  LOCAL_CFLAGS = -lmaxab
  LOCAL_LDFLAGS := -Lout/apps/test123/armeabi/objs/maxab
  LOCAL_SHARED_LIBRARY := libmaxab
  LOCAL_LDLIBS := -Lout/apps/test123/armeabi/libmaxab.so
  LOCAL_MODULE := test
  include $(BUILD_EXECUTABLE)前面的测试库libmaxab正常的生成了,后面的test需要用到前面的这个库中的maxab函数,但在编译完成链接的时候提示 make APP=test123
Android NDK: Building for application 'test123'
Compile thumb  : maxab <= maxab.c
SharedLibrary  : libmaxab.so
Install        : libmaxab.so => apps/test123/project/libs/armeabi/libmaxab.so
Compile thumb  : test <= test.c
Executable     : test
./out/apps/test123/armeabi/objs/test/test.o: In function `main':
/home/reaper/android-ndk-r5b/apps/test123/project/jni/test.c:6: undefined reference to `maxab'
collect2: ld returned 1 exit status
make: *** [out/apps/test123/armeabi/test] Error 1
这个问题让我郁闷了几天了,在网上看了很多,但都未能解决。希望知道的朋友帮下忙~~~~

解决方案 »

  1.   


    也就是我想测试一下自己的程序使用自己的库,但是用NDK编译好了库,当是编译使用了这个库的程序的时候,老是提示链接不上。
      

  2.   

    maxab.c
    --------------------------------int maxab(int x, int y)
      2 {
      3         return (x)>(y) ? (x):(y);
      4 }
    ---------------------------------
    test.c
    ---------------------------------
    #include<stdio.h>
      2
      3 int main(int argc, char **argv)
      4 {
      5         int a = 5, b = 3, c = 0;
      6         c = maxab(a, b);
      7         printf("c = %d\n", c);
      8         return 0;
      9 }
    ------------------------------------
      

  3.   


    libmaxab.so这个动态链接库已经生成了呀,test这个也生成了.o文件就是在最后的link的时候不行了。
      

  4.   


    你写个.h文件然后include啊, 不然显然函数未定义的...
    C的基础没学好...