C/C++于Java之间的互相调用
利用JNI技术,可以做到C/C++与Java之间的相互调用。
1、Java调用C/C++接口
这个是JNI最基本的应用,JNI有很多这方面的例子代码。一般把C/C++写成动态链接库;在Java程序在LoadLibrary,利用native接口,即可完成调用。
2、C/C++回调Java接口
这种用法,JNI的例子比较少。其实,也比较简单,JNI也提供了这样的接口。比如,GetObjectClass,GetMethodID,CallObjectMethod,NewObject,FindClass等接口,即可完成C/C++对Java接口的调用。
另外,需要注意的一个地方是,关于signature。比如,在 jmethodID GetMethodID(jclass clazz, const char *name,
const char *sig) 函数中的第三个参数,就需要函数的signature。那怎么知道Java方法的signature呢?
其实JDK,提供了查看Java方法的signature。方法如下:
(1)、CMD,去到xxx.class所在的目录。
(2)、输入命令:javap -s xxx
(3)、结果呈现在你眼前。
延伸:Android NDK也类似,同样可以做到C/C++与Java之间的互调。
相关文档:
有时,我们在写一个构造函数时,经常因为它包含众多的参数而苦恼,这时可以考虑用Builder模式来创建对象。
如,我们要设计一个营养成份的类,包含能量,蛋白质,脂肪,钙,铁,锌,维生素A, 维生素B1 ... 等,但在构造的时候,不一定每次都需要这些参数,如钙,铁,锌和维生素等是可选的,为了适应多种可能的搭配,比 ......
最近在用润乾在做一些web项目的报表,其中有一个批量打印的报表。需要把参数传到报表里,当把中文传到里面时总时乱码,采用了各种转码方式,也没转过来,晕.........
为什么会有这么多的编码,好头疼呀... ......
import java.util.Date;
class Dog{
private String name;
private Date birthday;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return b ......
题目都很简单,但有时候让你用笔完整的写出来却不那么容易了.
1.遍历文件夹(被这个题目考了两次)
import java.io.File;
public class ListFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path = "C:/Inetpub";
File f = new File(path);
list(f);
}
publ ......
1首先添加修改图片宽度和高度的方法
public static void reduceImg(String imgsrc, int widthdist, int heightdist) {
try {
File srcfile = new File(imgsrc);
if (!srcfile.exists()) {
return;
}
......