我的本地函数是:
JNIEXPORT jstring JNICALL Java_com_example_android_softkeyboard_Writingboard_rsgString
  (JNIEnv *env, jobject object,jint nPointNum,jobjectArray fTrjPoint)
{
……
CRealTimeRcg *pRTStrRcg = new CRealTimeRcg(szCharDic, szCharConf, szLngDic, szLnsegDic, szOversegDic, szOversegConfDic, szUnRcgDic, szBiRcgDic, szBiCode, ws);
……
}函数中的这个类CRealTimeRcg封装在另一个.so的库中,这个.so库是Linux下生成的,不是交叉编译的,(我也有windows的dll库),我怎么将.so库添加到工程中使用呢?在Android.mk文件中怎么编写呢?

解决方案 »

  1.   

    不行,只有用交叉编译工具生成的so文件才能运行,你既然自已可以编,我想你有源代码,将源代码用android的交叉编译工具编一个so文件。
      

  2.   

    为什么我们要交叉编译,各个编译器编译出来的可执行代码都是针对特定芯片的,例如在pc上编译出的可执行代码一般都是x86的可执行代码,现在手机里很多都是arm的,这时我们就需要交叉编译工具在pc机生成我们需要的arm可执行代码。
    存在的问题:老师给你的在linux下生成的so文件,如果不是用交叉编译工具生成的话,在arm上还是不可执行的。
    解决办法:让他们用交叉编译工具生成so文件,最好可以拿到源代码,从头走一遍会认识更深刻一点。