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

原文地址:https://www.cnblogs.com/kobe8/p/2451060.html