NDK功能不工作

NDK function is not working

本文关键字:工作 功能 NDK      更新时间:2023-10-16

我正在处理这个具有本机库函数的类
但是,函数返回NULL。可能的原因是什么?

注意:还有一个类具有NDK函数,运行良好。

package com.fgtit.data;
 import android.util.Base64;
 import android.util.Log;
public class Conversions {
private static Conversions mCom=null;
public static Conversions getInstance(){
    if(mCom==null){
        mCom=new Conversions();
    }
    return mCom;
}
public native int StdToIso(int itype,byte[] input,byte[] output);
public native int IsoToStd(int itype,byte[] input,byte[] output);
public native int GetDataType(byte[] input);
public native int StdChangeCoord(byte[] input,int size,byte[] output,int dk);
public String IsoChangeOrientation(byte[] input,int dk){
    int dt=GetDataType(input);
    if(dt==3){
        byte output[] =new byte[512];
        byte stddat[]=new byte[512];
        byte crddat[]=new byte[512];
        IsoToStd(2,input,stddat);
        StdChangeCoord(stddat,256,crddat,dk);
        StdToIso(2,crddat,output);
        return Base64.encodeToString(output,0,378,Base64.DEFAULT);
    }
    return "";
}
public String AllToIso(byte[] input,int dk){
    Log.d("checking", "response");
    switch(GetDataType(input)){
        case 1:{
            byte mTmpData[]=new byte[512];
            byte mIsoData[]=new byte[512];
            StdChangeCoord(input, 256, mTmpData, dk);
            StdToIso(2,mTmpData,mIsoData);
            return Base64.encodeToString(mIsoData,0,378,Base64.DEFAULT);
        }
        case 2:{
            byte mTmpData1[]=new byte[512];
            byte mTmpData2[]=new byte[512];
            byte mIsoData[]=new byte[512];
            IsoToStd(1,input,mTmpData1);
            StdChangeCoord(mTmpData1, 256, mTmpData2, dk);
            StdToIso(2,mTmpData2,mIsoData);
            return Base64.encodeToString(mIsoData,0,378,Base64.DEFAULT);
        }
        case 3:
            return IsoChangeOrientation(input,dk);
    }
    return "nothing";
}
public String AllToStd(byte[] input,int dk){
    switch(GetDataType(input)){
        case 1:{
            byte mTmpData[]=new byte[512];
            StdChangeCoord(input, 256, mTmpData, dk);
            return Base64.encodeToString(mTmpData,0,256,Base64.DEFAULT);
        }
        case 2:{
            byte mTmpData1[]=new byte[512];
            byte mTmpData2[]=new byte[512];
            IsoToStd(1,input,mTmpData1);
            StdChangeCoord(mTmpData1, 256, mTmpData2, dk);
            return Base64.encodeToString(mTmpData2,0,256,Base64.DEFAULT);
        }
        case 3:{
            byte mTmpData1[]=new byte[512];
            byte mTmpData2[]=new byte[512];
            IsoToStd(2,input,mTmpData1);
            StdChangeCoord(mTmpData1, 256, mTmpData2, dk);
            return Base64.encodeToString(mTmpData2,0,256,Base64.DEFAULT);
        }
    }
    return "";
}
static {
    System.loadLibrary("conversions");
}
}

我曾经遇到过类似的问题,在我只离开类和库方法后运行。像这样:

公共类LibInterface{静止的{System.loadLibrary("Lib");}public native int get_method(int param);}