zoukankan      html  css  js  c++  java
  • java如何去调用C++的方法详解

    这是一个调用c++ jni 的列子

    首先写一个GoodLuck 类,里面包含native本地方法,这是用作C/C++实现的。也就是用C/c++实现java的native
    方法。
    public class GoodLuck {
    private String string="";
    private int num;
    public GoodLuck() {
    }
    static {
    System.out.println(System.getProperty("java.library.path"));
    System.loadLibrary("goodluck");
    }

    public native static String getString();

    public native static String getInt();

    public native static void printOutString();

    public native static void printOutInt();

    public static void main(String args[]){
    GoodLuck gl = new GoodLuck();
    gl.getString();
    gl.getInt();
    gl.printOutString();
    gl.printOutInt();
    }
    }
    然后用 javac命令运行GoodLuck.java文件,生成GoodLuck.class文件:javac GoodLuck.java,然后再用javah运行GoodLuck.class文件:javah GoodLuck。生成GoodLuck.h。GoodLuck.h的内容为:
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include "jni.h"
    /* Header for class GoodLuck */

    #ifndef_Included_GoodLuck
    #define _Included_GoodLuck
    #ifdef__cplusplus
    extern "C" {
    #endif
    /*
    * Class: GoodLuck
    * Method: getString
    * Signature: ()Ljava/lang/String;
    */
    JNIEXPORT jstring JNICALL Java_GoodLuck_getString
    (JNIEnv *, jclass);

    /*
    * Class: GoodLuck
    * Method: getInt
    * Signature: ()Ljava/lang/String;
    */
    JNIEXPORT jstring JNICALL Java_GoodLuck_getInt
    (JNIEnv *, jclass);

    /*
    * Class: GoodLuck
    * Method: printOutString
    * Signature: ()V
    */
    JNIEXPORT void JNICALL Java_GoodLuck_printOutString
    (JNIEnv *, jclass);

    /*
    * Class: GoodLuck
    * Method: printOutInt
    * Signature: ()V
    */
    JNIEXPORT void JNICALL Java_GoodLuck_printOutInt
    (JNIEnv *, jclass);

    #ifdef__cplusplus
    }
    #endif
    #endif

    然后用VC6.0新建工程testdll(注意:工程为MFC AppWizard(dll)工程)
    然后记得将GoodLuck.h引入,还有jni.h(在jdk目录下),最后用C++实现这几个方法,编译后找到生成的dll文件,重命名为goodluck.dll,复制该dll文件与GoodLuck.class同目录下,运行java GoodLuck,就可以了。
  • 相关阅读:
    如何更改Linux yum源?
    Vsftp设置为PASV mode(被动模式传送)
    CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
    centos6.3搭建FTP服务器图文教程
    Linux关闭/开启防火墙命令
    linux下火狐浏览器安装flash player插件
    判断网站织梦DedeCms版本的方法
    PHP获取当前url路径的函数及服务器变量
    leetcode 205 Isomorphic Strings
    leetcode 70 Climbing Stairs
  • 原文地址:https://www.cnblogs.com/langtianya/p/3469109.html
Copyright © 2011-2022 走看看