• Java调用C++类库--JNI


    JNI是Java平台中的一个重要的功能,这里我把我做的Demo总结一下,分享一下,我会把每个步骤尽量的详细的展现出来。
    这里我就不讲解JNI的原理了,google,百度一下,到处都是
    好了,直接来讲步骤吧,文章最后给出了C++和Java的Demo
    第一步:安装Java jdk,eclipse。
    第二步,配置Java环境变量,java环境变量配置
    第三步,新建一个Java应用程序,名为:TestNativeCode,包名:com.liyong.TestNativeCode,类名:TestNativeCode
    第四步,在TestNativeCode类里面添加如下代码:
    package com.liyong.TestNativeCode;
    
    public class TestNativeCode {
        public native void sayHello();
        public static void main(String[] args) {
            System.loadLibrary("NativeCode");
            TestNativeCode nativeCode=new TestNativeCode();
            nativeCode.sayHello();
            }
    }

    第五步,编译Java文件
    1,运行-->cmd-->进入TestNativeCode项目的src目录下编译该Java类,命令 javac ./com/liyong/TestNativeCode/TestNativeCode.java。在该TestNativeCode.java目录下会生成TestNativeCode.class文件
    2,使用javah生成头文件,命令 javah -jni com.liyong.TestNativeCode.TestNativeCode。在src目录下生成com_liyong_TestNativeCode_TestNativeCode.h文件。

    第六步,编译C++类库
    1,打开VS2008,新建Win32 项目NativeCode,如图所示:

    确定后,在“应用程序类型”中选择“DLL”,如图:

    2,将上一步生成的com_liyong_TestNativeCode_TestNativeCode.h添加到项目头文件中。

    3,在NativeCode项目的“源文件”中添加NativeCode.cpp文件,具体如蓉如下

    #include "stdafx.h"
    #include "com_liyong_TestNativeCode_TestNativeCode.h"
    #include <iostream>
    using namespace std;
    
    JNIEXPORT void JNICALL Java_com_liyong_TestNativeCode_TestNativeCode_sayHello(JNIEnv * env, jobject obj)
    {
    cout<<"Hello NDK!"<<endl;
    //printf("Hello NDK!");
    }

    4,使用Release编译,生成NativeCode.dll,将其拷贝到java环境变量Java_Home的Bin目录下,比如,LZ的Java_Home目录是
    C:Program FilesJavajdk1.6.0_25,将NativeCode.dll拷贝到C:Program FilesJavajdk1.6.0_25in目录下。

    第七步,运行Java应用程序,会输出“Hello NDK!”,Ok,成功!这里只是一个简单的例子,具体的应用就靠大家举一反三啦

    这里给出Demo的源码:C++:NativeCode.rar Java:TestNativeCode.rar

    转自:http://www.cnblogs.com/cpcpc/archive/2012/08/13/2636199.html

  • 相关阅读:
    Java注解学习
    微信小程序开发的一些基础知识点
    feign请求传送实体类参数的一些摸索
    springcloud bus中踩过的坑
    API网关初接触
    ELKF学习(Elasticsearch+logstash+kibana+filebeat)
    getWriter() has already been called for this response异常的一些问题
    kafka的学习
    如何优化一个丑陋的switch语句!
    项目启动之后进行一些初始化的方法
  • 原文地址:https://www.cnblogs.com/chensheng-zhou/p/5430867.html
Copyright © 2020-2023  润新知