java 托管 非托管_java jni调用 非托管 dll

Step1:

编写java类,e.g.:

//filename: HelloWorld.java

public class HelloWorld{

public native void displayHelloWorld();

public native int add(int a,int b);

static {

System.loadLibrary("hello");

}

public static void main(String[] args){

HelloWorld hw=new HelloWorld();

hw.displayHelloWorld();

System.out.println();

System.out.println(" 1+20= "+ hw.add(1,20) );

}

}

Step2:  javac HelloWorld.java

Step3:  javah HelloWorld

生成头文件如下:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include

/* Header for class HelloWorld */

#ifndef _Included_HelloWorld

#define _Included_HelloWorld

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: HelloWorld

* Method: displayHelloWorld

* Signature: ()V

*/

JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld

(JNIEnv *, jobject);

/*

* Class: HelloWorld

* Method: add

* Signature: (II)I

*/

JNIEXPORT jint JNICALL Java_HelloWorld_add

(JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus

}

#endif

#endif

Step4:用vc6建立一个win32 dll项目, 项目名hello

Step5:

tools->option->directory(标签)

directories增加两个include 路径(具体看java的实际include路径):

D:\java\jdk\jdk1.6.0_21\include

D:\java\jdk\jdk1.6.0_21\include\win32

Step6:

新建hello.cpp

#include

#include "HelloWorld.h"

#include

#include

JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld

(JNIEnv *, jobject)

{

printf("hello 中国 !@#$");

}

/*

* Class: HelloWorld

* Method: add

* Signature: (II)I

*/

JNIEXPORT jint JNICALL Java_HelloWorld_add

(JNIEnv *, jobject, jint a, jint b){

return a+b;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值