NDK功能不工作
NDK function is not working
我正在处理这个具有本机库函数的类
但是,函数返回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);}
相关文章:
- OpenSSL 解密功能无法正常工作
- 链表中的显示功能无法正常工作
- 打印功能无法正常工作 - 链表
- 排序功能在C++中未按预期工作
- 如何组织 git 工作流以修复错误并同时引入新功能
- 为什么必须动态分配扩展数组才能使此功能正常工作C++
- Qt C++括号匹配和突出显示当前线路功能无法协同工作
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- C 功能如何内部工作
- 大写功能无法正常工作
- 为什么这个base64解码/编码功能不能正常工作?
- 如何使功能"run"工作。程序在调用运行时退出
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- Lower_bound功能无法正常工作
- 仅一个功能的链接错误.在同一类和CPP文件中具有相似签名的其他函数工作正常
- 功能测试宏在 Visual C++ 中无法正常工作
- 将Linux打开,读,写,关闭功能以在Windows上工作
- 如何使用字符串更改此插入功能以在链接列表中工作
- 澄清功能如何工作并与类相关
- C //尝试重写一个工作代码以包括我的功能