JNative 传递参数bug
下载JNative网址:http://sourceforge.net/projects/jnative/files/jnative/
下载JNative版本:JNative_1.4RC3_bin.zip
bug描述:
Test.dll中有个方法fnTest有五个参数,方法签名如下:
void fnTest(double a,double b,double c,double d,int e);
当用JNative调用时如下:
public void fnTest() throws NativeException, IllegalAccessException {
JNative fnTest=null;
try {
fnTest= new JNative("Test.dll", "fnTest");
fnTest.setParameter(0, Type.DOUBLE, "111.111");
fnTest.setParameter(1, Type.DOUBLE, "222.222");
fnTest.setParameter(2, Type.DOUBLE, "333.333");
fnTest.setParameter(3, Type.DOUBLE, "444.444");
fnTest.setParameter(4, Type.INT, "5");
fnTest.setRetVal(Type.VOID);
fnTest.invoke();
} finally {
if (fnTest!= null) {
fnTest.dispose();
}
}
}
代码运行起来后,到 Test.dll中的fnTest方法,发现参数a=444.444 b=333.333 c=222.222 d=111.111
没有看源代码,具体原因不知道。
将代码修改如下:
public void fnTest() throws NativeException, IllegalAccessException {
JNative fnTest=null; try {
fnTest= new JNative("Test.dll", "fnTest");
fnTest.setParameter(3, Type.DOUBLE, "111.111");
fnTest.setParameter(2, Type.DOUBLE, "222.222");
fnTest.setParameter(1, Type.DOUBLE, "333.333");
fnTest.setParameter(0, Type.DOUBLE, "444.444");
fnTest.setParameter(4, Type.INT, "5");
fnTest.setRetVal(Type.VOID);
fnTest.invoke(); } finally {
if (fnTest!= null) {
fnTest.dispose();
}
}
}
调用成功,问题搞定!!!
JNative 传递参数bug的更多相关文章
- bat 传递参数
调用bat时,传递参数有个小问题,记录一下. 1.问题描述: 传递参数时,接收的值不对.传递了“1,2,3”,接收时,只剩下1.后面的没有了. 解决: 原因是bat取参时,语法弄错了. Syntax ...
- vue中 router-link 传递参数以及获取
将所遇见的问题一步一步记录下来,不久便会成长 今天在修改前端(vue) BUG的时候遇见 router-link标签,传递参数到另一个页面,确不知道参数在另一个页面怎么接收,于是找度娘需求解决办法,最 ...
- hadoop传递参数方法总结
转自:http://blog.csdn.net/xichenguan/article/details/22162813 写MapReduce程序通常要传递各种各样的参数,选择合适的方式来传递参数既能提 ...
- linux内核可以接受的参数 | Linux kernel启动参数 | 通过grub给内核传递参数
在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB ...
- Vue 给子组件传递参数
Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...
- [转] C++的引用传递、指针传递参数在java中的相应处理方法
原文出处:[http://blog.csdn.net/conowen/article/details/7420533] 首先要明白一点,java是没有指针这个概念的. 但是要实现C++的引用传递.指针 ...
- 记一次WinForm程序中主进程打开子进程并传递参数的操作过程(进程间传递参数)
目标:想在WinForm程序之间传递参数.以便子进程作出相应的处理. 一种错误的方法 父进程的主程序: ProcessStartInfo psi = new ProcessStartInfo(); p ...
- 在 Angularjs 中 ui-sref 和 $state.go 如何传递参数
1 ui-sref.$state.go 的区别 ui-sref 一般使用在 <a>...</a>: <a ui-sref="message-list" ...
- Linux线程体传递参数的方法详解
传递参数的两种方法 线程函数只有一个参数的情况:直接定义一个变量通过应用传给线程函数. 例子 #include #include using namespace std; pthread_t thre ...
随机推荐
- Luogu P4211 [LNOI2014]LCA
我去这道题的Luogu评级是假的吧,这都算黑题. 我们首先考虑把操作离线不强制在线的题目离线一下一般都要方便些 考虑差分,我们用\(f(x)\)表示\([1,x]\)之间的点与\(z\)的答案,那么显 ...
- 【LGR-048 五周年庆贺】洛谷6月月赛
Luogu的五周年庆典比赛,还是比较满意的. 题目清新不毒瘤,数据优质不卡常,解法自然,为出题人点赞. 前三题的难度都很低,T5个人感觉还好.但是最后那个splay+hash是什么神仙东西. 最后好像 ...
- ASP.NET Core 2.1 源码学习之 Options[2]:IOptions
在 上一章 中,介绍了Options的注册,而在使用时只需要注入 IOption<T> 即可: public ValuesController(IOptions<MyOptions& ...
- 由一个“两次请求”引出的Web服务器跨域请求访问问题的解决方案
http://blog.csdn.net/cnhnnyzhy/article/details/53128179 (4)Access-Control-Max-Age 该字段可选,用来指定本次预检请求的有 ...
- CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)
机房一台centos6.9机器部署了jenkins发布系统,开发人员在用node编译js,发现依赖的gcc版本低了,故需要将gcc升级到高版本(至少5.0版本以上),这里选择升级到6.4.0版本,下面 ...
- Keepalived基础知识-运维小结
keepalived介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防 ...
- 【个人总结】软件工程M1/M2总结
个人博客连接: http://www.cnblogs.com/lwq12061168/p/4094252.html http://www.cnblogs.com/lwq12061168/p/40284 ...
- Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗?
Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗? org.eclipse.wst.jsdt.core_1.3.300.v201410221502\li ...
- SAP PP顾问面试题及资料
SAP PP顾问面试试题及资料 1.主数据 组织架构 •SAP中主要的组织架构有哪些?哪些用于PP的组织架构?•成本控制范围.公司代码.估价范围.工厂.库存地点之间的关系 物料主数据 •不同的物料主数 ...
- 设计模式笔记:策略模式(Strategy)
1. 策略模式简介 1.1 定义 策略是为达到某一目的而采取的手段或方法,策略模式的本质是目标与手段的分离,手段不同而最终达成的目标一致.客户只关心目标而不在意具体的实现方法,实现方法要根据具体的环境 ...