JNI(1)

 

java程序写的没有太大难度:

public class HelloJNI {



	/**

	 * 走向内力的第一步

	 * @param args

	 */

	static{

		System.loadLibrary("JNItest");

	}

	public static void main(String[] args) {

		

		new HelloJNI().sayHello();

		//System.out.println(System.getProperty("java.library.path")); 

	}

	

	public native void sayHello();



}

 主要问题出在本地代码C的实现以及环境变量的配置上:

1.本地代码C的实现:在VC++6.0下新建 "Win32 Dynamic-Link Library" 工程,在工程目录下加入用以下javah命令(使用此命令时先到java工程的class目录下)生成的头文件:

javah com.zhanglei.jniDemo.HelloJNI

 

加入jni.h以及jni_md.h头文件,这两个文件都在jdk的相应目录下(或者把这两个文件放在VC++6.0的include目录下,一劳永逸),然后主要代码如下:

#include "stdafx.h"

#include "com_XXX_jniDemo_HelloJNI.h"



JNIEXPORT void JNICALL Java_com_zhanglei_jniDemo_HelloJNI_sayHello

  (JNIEnv *, jobject)

{

    printf("helloJNI");

    return;

}

然后把VC++6.0编译生成的Dll文件放到PATH路径下,在java工程中 System.out.println(System.getProperty("java.library.path")) 可以得到当前可以将这个文件放在哪个目录下;或者是设置环境变量PATH为该DLL文件所在路径,但是人品问题,一直没搞定,哎...
最后,在Eclipse中编译java工程,成功打印出:helloJNI

 

 

 

 

 

 

 

你可能感兴趣的:(jni)