先区分清楚host和target的区别。
Linux和Windows是你的host platform。
Android是target platform。
编译Android library使用cross-compilation (交叉编译),即在某个host平台下编译针对某个特定的target平台的体系结构的代码。
使用ndk,只要选择了正确的target平台的ABI(arm,x86,mips等),那你编译得到的.so就能被相应的target平台执行。
如楼上所说,请先检查下面几点:
1. 交叉编译的ABI和你要运行代码的平台是否一致。
2. 检查.so是否被打包进apk文件。用解压缩软件(如winrar,好压)可以解压缩apk,查看你的.so是否在lib文件夹下。
3. 检查.so是否在java code里被Load成功。
4. 检查JAVA定义的native function的名称, 检查JNI函数的名称