java通过JNative 调用delphi Pointer无法解析

delphi代码

function test3(var ss: PChar): integer stdcall;
begin
ss := '返回3';
Result := 123456;
end;


JAVA代码:
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.misc.basicStructures.AbstractBasicData;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;

public class SystemTime extends AbstractBasicData<SystemTime>{


public String ss;

/**
* 分配内存,并返回指针
*/
public Pointer createPointer() throws NativeException {
pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(getSizeOf()));
return pointer;
}

/**
* 内存大小
*/
public int getSizeOf(){
return 1024;
}

/**
* 获取通过内存指针解析出结果
*/
public SystemTime getValueFromPointer() throws NativeException {

ss = getNextShort()+"" ;
return this;
}

public SystemTime() throws NativeException{
super(null);
createPointer();
}

public String toString(){

return ss+"";
}

public static SystemTime GetSystemTime() throws NativeException, IllegalAccessException {
// 创建对象
JNative jn = new JNative("C:/testdll/dlltest.dll", "test3");
jn.setRetVal(Type.INT);
SystemTime systemTime = new SystemTime();
// 设置参数
jn.setParameter(0, systemTime.getPointer());
jn.invoke();
// 解析结构指针内容

return systemTime.getValueFromPointer();
}

public static void main(String[] args) throws NativeException, IllegalAccessException{
System.err.println(GetSystemTime());

}

}



获取var ss: PChar ,ss := '返回3' 一直不能获取到,可以得到内存地址,但是地址里不知道怎么获得值,请前辈们帮忙提解一下,谢谢了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值