• 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 Files\Java\jdk1.6.0_25,将NativeCode.dll拷贝到C:\Program Files\Java\jdk1.6.0_25\bin目录下。

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

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

  • 相关阅读:
    2013-1-17 打开/关闭默认共享的命令
    2013-1-1遍历文件夹,改名文件
    2012-07-02 无边框最大化窗体
    2012-04-12 工具箱中添加自定义控件的方法
    2012-4-2 通过MdiParent设置窗体最前
    2012-2-7列举及终止进程
    python with as 以上这段代码执行完毕后,就算在处理过程中出问题了,文件 f 总是会关闭。
    终于好了 ipython 里执行dos命令 显示结果却显示在kernel界面里 搞定了
    Win7开启远程桌面
    哪位有方法把 dd/mm/yyyy的字符串 格式化成yyyy-mm-dd
  • 原文地址:https://www.cnblogs.com/cpcpc/p/2636199.html
Copyright © 2020-2023  润新知