通过JNI 实现 java与C++之间的信息传递
定义一个native 方法:
package ext;
import java.util.Hashtable;
public class TestJNI
{
static
{
System.loadLibrary("dllfile");
}
public TestJNI()
{
Hashtable htable = new Hashtable();
htable.put(1,2);
}
public native Hashtable getNameList();
public static void main(String[] arg)
{
TestJNI tstJNI= new TestJNI();
Hashtable htable= tstJNI.getNameList();
System.out.println(htable.size());
}
}
通过 javah 生成 头文件 ext_TestJNI.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class ext_TestJNI */
#ifndef _Included_ext_TestJNI
#define _Included_ext_TestJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: ext_TestJNI
* Method: getNameList
* Signature: ()Ljava/util/Hashtable;
*/
JNIEXPORT jobject JNICALL Java_ext_TestJNI_getNameList
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
在c++创建一个dynamic dll项目,并在 StdAfx.h 中 include 头文件 ext_TestJNI.h
StdAfx.h 代码:
#if !defined(AFX_STDAFX_H__FAD3F2E4_D6E1_4011_9791_2256C4B0BDE6__INCLUDED_)
#define AFX_STDAFX_H__FAD3F2E4_D6E1_4011_9791_2256C4B0BDE6__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Insert your headers here
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include "ext_TestJNI.h"
在 CPP文件中定义 方法实现:
CPP代码:
#include "stdAfx.h&
相关文档:
一、Java基础知识
1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。
2.字符串的操作:
写一个方法,实现字符串的反转,如:输入abc,输出cba
写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。
3.数据类型之间的转换
如何将数值型字符转换为数字(Intege ......
问题描述:一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢?(用JAVA实现)
问题解析:
1)在这个问题中,要注意每头牛生产的时间:
第一头牛三年后才会生出一头新的牛(注意是三年后,而不是第三 ......
昨天看到留言,于是今天又把一些功能加进进去了
比如,
1,程序可以最小化到系统托盘区
2,程序可以批量保存所有截过的图片
3,修正了以前的一个小BUG,那就是输入保存图片的文件名时,如果没有输入后缀名,将保存正常,如果输入了后缀名,将会保存格式出错
打包文件请点击这里下载,dist文件夹里面的JAR文件是可以双击执行的
感 ......
程序执行时会顺序经过loading、linking、initialization三个步骤
1. loading:查找类或接口的二进制文件
2. linking:装入类或接口的二进制文件,合为JVM的运行状态,使其可以被执行。此过程包括三个子过程:verification, preparation, and
resolution of symbolic references
3. initialization: ......
其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法,一般可以应用在键盘鼠标事件跟踪。
下面举一个例子:
假定我们希望在某个事件发生时得到通知。我们可以定义一个接口:
/*
* 在某个事件发生时得到通知.
*/
public interface InterestingEvent {
public void interestingEvent() ......