zoukankan      html  css  js  c++  java
  • java调用jni

    新建一个java类

    package com.lh;

    public class HelloWorld {
     static{
      System.loadLibrary("dllTest");//该名称是生成的dll的名字
     }
     public native void say();
    }

    使用jdk命令 生成 c++ 头文件   【头文件相当于java接口】

    javah com.lh.HelloWord

    生成一个 com_lh_HelloWorld.h的头文件

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include "jni.h"
    /* Header for class com_lh_HelloWorld */

    #ifndef _Included_com_lh_HelloWorld
    #define _Included_com_lh_HelloWorld
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_lh_HelloWorld
     * Method:    say
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say
      (JNIEnv *, jobject);

    #ifdef __cplusplus
    }
    #endif
    #endif

    JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say
      (JNIEnv *, jobject);  这玩意就是说Java里面 com.lh.HelloWorld下的say方法  有个分号在后面

    表示亟待实现

    新建一个 dynamic link library 工程

    拷贝生成的头文件到工程中

    添加一个源文件 名称随便取 比如HelloWordImpl.cpp

    #include "jni.h"
    #include "com_lh_HelloWorld.h"
    #include <iostream.h>
    JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say(JNIEnv *, jobject)
    {
     cout<<"你好jni"<<endl;
     return;
    }

    jni.h是java中的

    到jdk目录下的include 目录下 拷贝 jni.h 和 jni_md.h到 c++工程中

    编译 丢到system32 或者  java工程更目录下

    要丢到哪里 很简单

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

    输出的接口的地方 都可以丢 dll文件  其中有一个 . 表示当前根目录

  • 相关阅读:
    eclipse中使用git
    获取系统的联系人信息
    Android中调用百度地图
    shell脚本等的操作
    shell与变量的声明的操作
    文件的基本操作命令
    Android实战_来电拦截专家
    linux c学习笔记----进程创建(fork,wait,waitpid)
    2.2.1 MySQL基本功能与参数文件管理
    2.3.6 Federate 远程访问数据库
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331629.html
Copyright © 2011-2022 走看看