jnative 从指针中获得传出值
2015-08-08 17:48
447 查看
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 PointerParam extends AbstractBasicData<PointerParam> { public String retValue;// 返回的参数 protected PointerParam() throws NativeException { super(null); createPointer(); } /** * 分配内存,并返回指针 */ public Pointer createPointer() throws NativeException { pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(getSizeOf())); return pointer; } /** * 内存大小 */ public int getSizeOf() { return 1024; } /** * 获取通过内存指针解析出结果 */ public PointerParam getValueFromPointer() throws NativeException { retValue = getNextShort() + ""; return this; } public String toString() { return retValue + ""; } public static void main(String[] args) throws NativeException, IllegalAccessException { // 创建对象 PointerParam pointerParam = new PointerParam(); // 1.加载cpp System.loadLibrary("JNativeCpp"); // 2.加载动态库 JNative jNative = new JNative(System.getProperty("user.dir") + "\\T9Sender.dll", "T9GetNetAdapterCount"); // 3.设置返回参数的类型 没有它不出值 jNative.setRetVal(Type.INT); // 4.设置要调用方法中的参数:0 表示第一个以此类推 Pointer param1 = pointerParam.getPointer(); // 5.设置参数 jNative.setParameter(0, param1); // 6.执行方法 jNative.invoke(); System.out.println("调用的DLL文件名为:" + jNative.getDLLName()); System.out.println("调用的方法名为:" + jNative.getFunctionName()); // 7.返回值 System.out.println("指针中返回的参数:" + pointerParam.getValueFromPointer()); } }
相关文章推荐
- FZU - 2125 - 简单等式
- Teaching Mario to play with himself: AI, machine learning, and Super Mario Bros.
- Java核心API -- 12(对象序列化和反序列化)
- 用C#生成KML路径文件(上篇)
- 数据结构学习笔记(二)---单链表
- HDU-OJ-1029 Ignatius and the Princess IV-出现至少(N+1)/2次的数
- 自动布局 01 注意事项
- 《小强升职记》 读书笔记
- java开发微信公众平台备忘
- 3.1html学习之列表
- 汇编语言实现电子闹钟
- uva 11836(两个四面体最短距离)
- Django分页的基本实现办法
- 简单的HTML5在线画板
- [转载] DevOps年中盘点:国外最受欢迎的10篇技术文章
- Android基础知识杂记
- [UVa 10561]Treblecross游戏
- POJ-1664 放苹果
- scala学习:Scala文件的读取、写入、控制台输入操作代码
- [iOS-Swift编程]Method '...' with Objective-C selector '...' 错误的解决方法