IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Android问题集锦之四十五:undefined reference to \'srand\'

    lincyang发表于 2015-11-02 22:00:00
    love 0

    ndk 10b~10e在编译使用C随机数函数srand和rand时没有问题,
    可是程序运行时就报类似下面的错误:

     error: undefined reference to 'srand'
     error: undefined reference to 'rand'

    这让我百思不得其解。
    我先后做了如下尝试:
    1、有网友说我的ndk版本太低了,要用高一些的。
    我就将原来使用的10b换成了10e,结果还是不行。
    2、有网友说要将交叉编译器换成高版本的,我更新了,结果还是不行。
    3、有网友说不要用64位的ndk,要用32位的。我又新下载了32位的10e,还是不行。

    就在我崩溃的要放弃的时候,国外网友提到了stdlib.h,好像昨天就有看到这个头文件的问题。
    我试着加入这个头文件,再编译运行,通过了!

    这可能是bionic库做的调整吧,与原C标准库有些差异。不过既然没问题了,还是值得高兴一下!

    #include "shooter.h"
    #include <stdlib.h>
    #include <stdio.h>
    
    void bubble_sort(int *array,int n) {
        int i,j,tmp;
        for(i=0;i<n-1;i++) {
            for(j=n-1;j>i;j--) {
                if(array[j-1]>array[j]) {
                    tmp = array[j-1];
                    array[j-1]=array[j];
                    array[j]=tmp;
                }
            }
        }
    }
    
    int A(int a) {
        int n = 10;
        int i;
        int array[n];
    
        srand(time(NULL));
        for(i=0;i<n;i++) {
            array[i] = rand()%100+1;
            printf("%d, ",array[i]);
        }   
    
        printf("\n");
        bubble_sort(array,n);
        return array[0];
    }
    

    参考:
    http://stackoverflow.com/questions/27186706/spin-verification-undefined-reference-to-random-and-srandom

    这与android不挨着,但也帮了我。



沪ICP备19023445号-2号
友情链接