好了,我前面的一篇blog已经讲过了这个问题。
http://blog.csdn.net/whitetao/article/details/7242712
在Android API < 9时,采用android NDK编译代码是不支持pthread_rwlock_t结构体的。
当时给的解决办法是改写application.mk文件,把版本改成9,APP_PLATFORM := android-9 //对应2.3.1
但是如果我们就需要android 2.2及一下版本支持这个结构体怎么办?
下面将给出解决办法
大家第一点肯定会想,既然不支持,那么我们能否使用android 2.3.1的跟该结构体相关的东东替换掉android2.2版本的呢?
然后我就去查了相关的东东,发现该结构体定义在pthread.h中,代码实现打包在libc.so中,然后进行替换
我试过了,确实是个好办法,编译通过了,但是,我们编译出来的库java层通过jni调用不了了,百思不得其解。
我想了一下,因为libc.so是一些基础库,可能native的一些规则里面也有,两个版本的规则不一致了,所以找不到了。
反正不管它吧,这个方法以失败告终。
好了,再打开android 2.3.1的pthread.h头文件看一下,