求哪位用C库成功在android下编译生成libXXX.so文件,并写jni函数成功调用的?(主要想借鉴下针对main函数写jni函数的方法)
比如对C库中的例子(带main函数入口的例子如何用jni规则修改)

解决方案 »

  1.   

    就是不太明白int main(int argc, char* argv[])中的 char* argv[]是如何处理的
      

  2.   

    你准备在jni的模块里面放main函数??  没试过。。有这个必要吗??
      

  3.   

    是啊  因为要移植的代码中有int main(int argc, char* argv[])
    {
      function1(argc, argv);
      function2(argc, argv, GetNalBytes_StreamType);
    ...
    functionn();
       
    }不知道参数argv用jni该如何处理?,或者说是这个main函数移植android中用jni怎样修改
      

  4.   

    [Quote=引用 4 楼 haoruifly 的回复:]引用 3 楼 cxz003 的回复:你准备在jni的模块里面放main函数??  没试过。。有这个必要吗??是啊  因为要移植的代码中有
    int main(int argc, char* argv[])
    {
      function1(argc, argv);
      function2(argc, argv, GetNalBytes_StreamType);
    ...
    functionn();
       
    }
      

  5.   

    int main_native(int argc, char* argv[]);//申明main_native函数
    //Used to get the len of a java Array
    const int getArrayLen(JNIEnv* env,jobjectArray jarray);
    /*
     * Class:     com_svc_Natives
     * Method:    mainnative
     * Signature: ([Ljava/lang/String;)I
     *///jni函数
    JNIEXPORT jint JNICALL Java_com_svc_Natives_mainnative
    (JNIEnv *env, jobject jobj, jobjectArray jarray)
    {
    jsize len = getArrayLen(env, jarray);//获取数组长度
    char* args[(int)len];
    int i;
    jstring jrow;
    for(i=0; i<len; i++)
    {
    //获得jobject对象,并将jobject对象向jstring对象转化
    jrow = (jstring)(*env)->GetObjectArrayElement(env, jarray, i);//jarray为对象数组
    //将jstring类型转化为char类型
    const char* row = (*env)->GetStringUTFChars(env, jrow, 0);

    strcpy(args[i], row);
    (*env)->ReleaseStringUTFChars(env, jrow, row);//释放jni内存
    } main_native(len, args);//这里调用原来的main函数 return 0;}