在做一个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);
}
JNative.setRetVal怎么设置返回值的类型为byte
答案:4 悬赏:0 手机版
解决时间 2021-12-26 05:08
- 提问者网友:沉默菋噵
- 2021-12-25 10:06
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-12-25 11:44
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);
可以多看看别人代码总结
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);
可以多看看别人代码总结
全部回答
- 1楼网友:像个废品
- 2021-12-25 13:20
在做一个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
- 2楼网友:骨子里都是戏
- 2021-12-25 12:19
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
- 3楼网友:往事埋风中
- 2021-12-25 12:09
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
再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯