When in rome do as the romans do学习语言,无论是人类语言还是编程语言,切忌将自己原来的语言习惯,生搬硬套代入新的环境。 中文里面,爷爷奶奶叔叔舅舅分的很清楚,西方语言从不分那么清楚。但是,这影响他们日常生活了吗?至少,他们长辈、晚辈之间的关系,看上去比我们融洽。同样,近二十年来,Java一直不能实现你这个具体的技术要求。但是,数以千万甚至亿计的Java程序/设备还是活的好好的,功能只比delphi的多,新的android应用还是不断推陈出新。你现在学新的语言/平台,就按照这个新的语言/平台的习惯去思考吧。
中文里面,爷爷奶奶叔叔舅舅分的很清楚,西方语言从不分那么清楚。但是,这影响他们日常生活了吗?至少,他们长辈、晚辈之间的关系,看上去比我们融洽。同样,近二十年来,Java一直不能实现你这个具体的技术要求。但是,数以千万甚至亿计的Java程序/设备还是活的好好的,功能只比delphi的多,新的android应用还是不断推陈出新。你现在学新的语言/平台,就按照这个新的语言/平台的习惯去思考吧。
一定要地址才能实现那个函数的话(但目测99.99%的情况是不需要地址也可以的),只能采用其他语言编译DLL SO等库然后再让Java调用。
我有一个应用程序是用delphi调用c的dll实现的,现在需要使用java将该应用程序改写成网络版的,我需要的就是把delphi程序改写成java网络程序,java调用c的dll!在delphi中使用到了指针指向变量来调用dll,不知道在java里面如何实现
我也尝试了引用,jnative中有一个关于指针的操作,setIntAt()函数,但是不管是普通变量还是引用好像都只是设置值,没有指向那个变量
这个怎么说呢,我的delphi程序的一部分是这样的
g_LArg4 := g_SourceElimFlag;
g_PArg8 := @g_LArg4;(指针指向变量)
g_PArg9 := @g_ChiSquare;(指针指向变量)
g_PArg10 := @g_RSquare;(指针指向变量)
g_PArg11 := @g_PCMass;(指针指向变量)
g_PArg12 := @g_sumSCEs; (指针指向变量)
CMB82error := CallCMB82dll;(调用c的dll)
调用完c的dll后,指针所指向的变量有返回值,我需要使用这些返回值,如果用java数组的话要怎么操作啊???
这个怎么说呢,我的delphi程序的一部分是这样的
g_LArg4 := g_SourceElimFlag;
g_PArg8 := @g_LArg4;(指针指向变量)
g_PArg9 := @g_ChiSquare;(指针指向变量)
g_PArg10 := @g_RSquare;(指针指向变量)
g_PArg11 := @g_PCMass;(指针指向变量)
g_PArg12 := @g_sumSCEs; (指针指向变量)
CMB82error := CallCMB82dll;(调用c的dll)
调用完c的dll后,指针所指向的变量有返回值,我需要使用这些返回值,如果用java数组的话要怎么操作啊???java的数组传给C C在运算完成之后写回这个数组 java再用这个数组 就是已经改变后的值了
我的那么多参数的类型都不同,怎么放到一个数组里传给C啊,那还使用指针吗?我c中调用dll的函数的形参全都是void*类型的,如果改成传数组的话岂不是都得重新改了?而且这样的话还得改写C的程序重新编译DLL吗?
我这个是javaweb网站中的action中写的函数,根本就没有args,所以没办法用这个传递参数
我的那么多参数的类型都不同,怎么放到一个数组里传给C啊,那还使用指针吗?我c中调用dll的函数的形参全都是void*类型的,如果改成传数组的话岂不是都得重新改了?而且这样的话还得改写C的程序重新编译DLL吗?[/quote那你查一下unsafe这个关键字吧 获取地址 但是根据操作系统和虚拟机的不同 方法也不同