zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    对类对象使用new时地址分配的情况
    c++堆与栈的简单认识
    多态公有继承
    Cookie & Session & JSP入门
    Response & ServletContext
    Java网络编程篇文章阅读顺序
    URL编程
    UDP网络编程
    TCP网络编程
    InetAddress类的使用
  • 原文地址:https://www.cnblogs.com/kobe8/p/2451060.html
Copyright © 2011-2022 走看看