易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++ 与 JAVA 的互操作

前言:前段时间在CSDN的C++社区遇到一个需要封装考勤机接口的动态库给JAVA调用的帖子,勾起了我对JAVA的无限怀念。在此,我想把这项技术简单再介绍一下。
一、关于Java Native Interface (JNI)
JNI是JAVA本地编程接口,属于JDK的一部分。它允许JAVA能够操作本地API或由其他语言编写的动态库。不过当你使用这项技术的时候,需要考虑JAVA的可移植性。
二、编写一个简单的JNI程序
1、编写一个JAVA程序
 
// HelloWorld.java
class HelloWorld
{
//声明本地方法,以native为关键字
public native void displayHelloWorld();
static
{
//加载本地方法所在的动态库
System.loadLibrary("HelloWorld");
}
public static void main(String[] args)
{
new HelloWorld().displayHelloWorld();
}
}
重点部分: a)本地方法以native为关键字声明 b)加载动态库
2、编译源程序
cmd > javac HelloWorld.java
3、创建.h文件我们需要从HelloWorld.class文件中生成对应的.h文件,以便在C/C++编写代码。
cmd>javah -jni HelloWorld
生成的文件(HelloWorld.h)长这个样子:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplusextern "C" {
#endif
/* * Class: HelloWorld * Method: displayHelloWorld * Signature: ()V */
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject);
#ifdef __cplusplus}
#endif
#endif

4、对应HelloWorld.h文件创建一个.c文件,实现部分在里面编写
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
5、编译该.c文件,生成dll
cmd >cl /IC:\j2sdk1.4.2_08\include /IC:\j2sdk1.4.2_08\include\win32 /LD HelloWorld.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
HelloWorld.c
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserve


相关文档:

Java options Some Useful XX Options

http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
Categories of Java HotSpot VM Options
 

Standard options recognized by the Java HotSpot VM are described on the Java Application Launcher reference pages for Windows
, Solaris
and Linux
. This document deals exclusively wit ......

java 操作短信猫实现短信群发

采用串口操作进行短信收发,是比较常见的一种方式.比如,很多群发软件,用的就是这种方法.
1.配置comm.jar.
Comm.jar是Sub实现底层串口操作的API,调用了本地的DLL文件,因为Java本身不具备直接访问硬件设置的能力,都是通过调用本地方法来实
现的.可以Java的官方网站下载.下载之后把其中Comm.jar包导入到工程的Classpath中,把 ......

java伪静态 文件防盗链的实现


现在UrlRewriter技术有两个技术平台的,一个就是在Java方向的,另一个就是.NET方向的。这次是Java方向的应用。
首先让我们了解它的工作原理,说白了它就是一个简单的过滤器(Filter),看看源码你就会很快的明白,它就是通过我们在jsp中常用的两个方法实现的forward(),sendRedirect().
下面我们就快速的为你的网站搭建U ......

C/C++ 面试题

第一题:
下面程序的输出结果?
#include <stdio.h>
#include <iostream>
void main()
{
char str1[] = "";
char str2[] = "";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "a ......

ioframe socket io frame设想中的C网络库


设想中的C网络库ioframe is a simple base socket library using libevent.http://blog.csdn.net/Solstice/archive/2010/03/10/5364096.aspx
按照
的思想提交的一份代码。
设想中的 C++ 网络库线程安全,支持多核多线程在不增加复杂度的前提下可以支持 FreeBSD/Darwin,方便将来用 Mac 作为开发用机,但不为它做性能 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号