永发信息网

JNative.setRetVal怎么设置返回值的类型为byte

答案:4  悬赏:0  手机版
解决时间 2021-12-26 05:08
在做一个java调用delphi语言写的dll时,采用JNative方法,函数已经成功调用,能够正确的返回外接设备的个数,但是在eclipse中编译运行程序时会弹出内存不能为read的警告,该函数在dll中的返回值是byte,但是我在JNative.setRetVal()中找不到byte的类型,用的是int代替不知道是这个原因造成的错误还是其他什么原因。

下面是代码
public int BoxNo() throws NativeException,
IllegalAccessException{
try
{
JNative myJNA = new JNative("psusbcore.dll", "GetUSBBoxes");
myJNA.setRetVal(Type.INT);
myJNA.invoke();
return myJNA.getRetValAsInt();
}
finally
{
if (myJNA != null)
{
System.out.println("ERROR!");
}
}
}

public static void main(String [] args) throws NativeException,
IllegalAccessException{
seconds sec = new seconds();
int result = sec.BoxNo();
System.out.println("result:" + result);
}
最佳答案
Type里面,没有Byte。而一般情况,和C、C++的调用是返回int的,或long

package org.xvolks.jnative;

public enum Type
{
VOID("Void", -1),

INT("Int", 0),

LONG("Long", 9),

DOUBLE("Double", 7),

FLOAT("FLOAT", 8),

STRING("String", 4),

PSTRUCT("Stuct*", 6);
可以多看看别人代码总结
全部回答
在做一个java调用delphi语言写的dll时,采用JNative方法,函数已经成功调用,能够正确的返回外接设备的个数,但是在eclipse中编译运行程序时会弹出内存不能为read的警告,该函数在dll中的返回值是byte,但是我在JNative.setRetVal()中找不到byte的类型,用的是int代替不知道是这个原因造成的错误还是其他什么原因。 下面是代码 public int BoxNo() throws NativeException, IllegalAccessException{ try { JNative myJNA = new JNative("psusbcore.dll", "GetUSBBoxes"); myJNA.setRetVal(Type.INT); myJNA.invoke(); return myJNA.getRetValAsInt(); } finally { if (myJNA != null) { System.out.println("ERROR!"); } } } public static void main(String [] args) throws NativeException, IllegalAccessException{ seconds sec = new seconds(); int result = sec.BoxNo(); System.out.println("result:" + result); }package org.xvolks.jnative; public enum Type { VOID("Void", -1), INT("Int", 0), LONG("Long", 9), DOUBLE("Double", 7), FLOAT("FLOAT", 8), STRING("String", 4), PSTRUCT("Stuct*", 6); Type里面,没有Byte。而一般情况,和C、C++的调用是返回int的,或LONG
package org.xvolks.jnative; public enum Type { VOID("Void", -1), INT("Int", 0), LONG("Long", 9), DOUBLE("Double", 7), FLOAT("FLOAT", 8), STRING("String", 4), PSTRUCT("Stuct*", 6); Type里面,没有Byte。而一般情况,和C、C++的调用是返回int的,或LONG
package org.xvolks.jnative; public enum Type { VOID("Void", -1), INT("Int", 0), LONG("Long", 9), DOUBLE("Double", 7), FLOAT("FLOAT", 8), STRING("String", 4), PSTRUCT("Stuct*", 6); Type里面,没有Byte。而一般情况,和C、C++的调用是返回int的,或LONG 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
阅读以下实验内容,回答问题:夏天,把一小块
耍帅是什么意思
正宁县国土资源局地址有知道的么?有点事想过
P语言:从键盘输入一串字符串,统计该字符串
lol防爆天使是那个人物的皮肤?
雄鹦鹉长什么样子
I5 3210M怎么打开超线程 我需要极其详细的步
减肥的那个:用胳膊和脚在地上支撑身体一动不
微信卸载后还能不能找回
淘宝店铺如何升级天猫
My_______sisteristwoyears_______t
微博账号手机号很久以前的想不起来了,怎样找
女生在结婚前一般要谈几次恋爱!平均时间为多
单选题已知函数y=f(x)(x∈R)满足f(x+1)
昵称暖暖☆……
推荐资讯
深圳百乐宝是传销吗
社保人员增加的报表信息如何填写
老九门16.17 付费勿扰
企业文化理解怎么写
太原市尖草坪区不动产登记中心在什么地方啊,
expensive mobile phone it is?---Yes, but I
读冰雪之文,养浩然之气。(20分)一卷冰雪文
万古长情的意思
安卓设备上的 LBE 安全大师口碑如何?
女人左侧腰疼是什么原因
阅读下面短文,撑握其大意,然后从1—20各题
图中甲的经纬度是________乙的经纬度是______
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?