Java与C++语言在JNI下的交互
java环境下调用VC++编写的动态链接库文件
一,开发平台:
MyEclipse 6.0,VC++6.0
二,JNI基础知识:
JNI(java native interface),JAVA本地接口调用,目的是为了JAVA可以调用本地程序。
三,交互过程:
1,建立java类。例如,建立一个RSA加密解密的类:
package zkxx.ctais2.client.common;
public class RsaEncrypt {
/**
* @param args
*/
public native String GetKeys();
public native String Encrypt(String source,String PublicKey);
public native String Decrypt(String cipher,String PrivateKey);
static {
System.loadLibrary("RSAEncrypt");
}
public static void main(String[] args) {
}
}
2,生成C++语言的头文件:
1)注意:利用javah工具生成头文件需要注意,类的包结构,和class文件存储的路径。
例如:本地class文件存储路径:E:\lclai\lclai\src\
包结构应为:E:\lclai\lclai\src\com\org\lclai
RsaEncrypt.java应该存放在包路径下。
2)CMD命令提示符下进入E:\lclai\lclai\src\com\org\lclai路径
输入命令:javac RsaEncrypt.java
回车。
把生成的class文件拷贝到路径E:\lclai\lclai\src\
CMD命令提示符下进入E:\lclai\lclai\src\
输入命令:javah -classpath E:\lclai\lclai\src -jni E:\lclai\lclai\src\com\org\lclai\RsaEncrypt
回车。
在路径E:\lclai\lclai\src\便会生成以包结构和类名结合的头文件。
3,编写cpp文件
cpp文件头需要包含刚刚生成的.h文件,此外还需要包含jni.h.
// RSAEncrypt.cpp : Defines the initialization routines for the DLL.
//
#include "stdafx.h"
#include "RSAEncrypt.h"
#include "CryptoPP32.h"
#include "zkxx_ctais2_client_common_RsaEncrypt.h"
#include "jni.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//
// Note!
//
// If this DLL is dynamically linked against the MFC
// DLLs, any functions exported from this DLL which
// call into MFC must have the AFX_MANAGE_STATE macro
// added at the very beginning of the function.
//
// For example:
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
//
相关文档:
Java里面的dnd;
界面编程里面能熟练的运用的人不多,而对Java中的拖拽知根知底的人就更少了我的一篇 文章-- Java中的Drag and Drop详解与代码示例 里面有详细介绍.
java.awt.MouseInfo, java.awt.PointerInfo;
我曾经想得到鼠标在屏幕上的绝对位置,我试过通过在MouseListener里面得到鼠标在一个控件里面的相� ......
摘要:
本文针对java初学者或者annotation初次使用者全面地说明了annotation的使用方法、定义方式、分类。初学者可以通过以上的说明制作简单的annotation程序,但是对于一些高级的annotation应用(例如使用自定义annotation生成javabean映射xml文件)还需要进一步的研究和探讨。涉及到深入annotation的内容,作者将在后文� ......
网上转贴的Java正则很让人失望,一篇JavaScript正则集录被很多不负责任的人转来转去,并打上Java正则的标题,汗,真是烂人一堆。
// url正则
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpressionTest {
public static void main(String[] args) {
Pa ......
tomcat为一个jsp和servlet的容器,但它除了这个外还自带了web服务器。也就是说,它既是servlet容器,也是一个web服务器。
它是用java编写的,用来执行servlet和jsp的,但处理静态资源上apache等专业服务器功能那么强。所以很多人愿意将两者结合起来使用。tomcat处理动态页面,而appache处理静态资源,这样两者各取所长。另 ......