使用 Jni 调用 Dll 的实现JAVA在cmd控制台刷屏

本文介绍了如何使用Java的JNI接口调用DLL库,以实现在CMD控制台中进行屏幕滚动的效果。首先在Java端定义类并生成头文件,接着在VS中创建C++ DLL项目,导入必要的头文件并编写实现。最后,将生成的DLL库与Java类放在一起,通过Java程序调用DLL实现功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码与实际图片有一定出入

有问题请留言


第一步:编写Java端代码

定义一个Java类Cls

package pacmanDemo;

/**
 * Created by DH on 2015-10-24.
 */
public class Cls {

    // 声明本地方法
    public native void clear();
    static {
        //加载DLL
        System.loadLibrary("ClsCPP");
    }

}
定义一个调用类Main

package pacmanDemo;

import java.util.Scanner;

/**
 * Created by DH on 2015-10-24.
 */
public class Main {

    public static void main(String args[]){

        final Cls clearScreen = new Cls();
        Scanner sc = new Scanner(System.in);
        System.out.print("Hello, World");
        String temp = sc.nextLine();
        clearScreen.clear();
    }
}

编译之后在.class所在的pacmanDemo目录下执行javah pacmanDemo.Cls命令生成头文件pacmanDemo_Cls.h

若没有包,则直接javah Cls


第二步:生成DLL库

1. 打开VS,创建一个名称为ClsCpp的C++ Win32项目。在向导的应用程序类型处选择DLL,点完成。


设置Release+Win32编译配置。根据需要选择32位还是64位


2. 将签名生成的pacmanDemo_Cls.h文件拷贝到ClsCpp项目的根目录下

3.  找到jni.h和win32文件夹下的jni_md.h。它们在安装jdk的文件夹下,include文件夹,同样拷贝到项目根目录下


4.然后在VS中右键头文件文件夹添加现有项把这个头文件包含进来,接下来就是编辑Cls.cpp文件。

pacmanDemo_Cls.h里边的样子:

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

#ifndef _Included_pacmanDemo_Cls
#define _Included_pacmanDemo_Cls
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     pacmanDemo_Cls
 * Method:    clear
 * Signature: ()V
 */

// 下边这一句复制到Cls.cpp
 JNIEXPORT void JNICALL Java_pacmanDemo_Cls_clear
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

所以Cls.cpp是这样子的


#include "jni.h"
#include "pacmanDemo_Cls.h"
#include <stdio.h>
#include <stdlib.h>

JNIEXPORT void JNICALL Java_pacmanDemo_Cls_clear(JNIEnv *, jobject) {
	system("cls");
}

5.编译,生成解决方案,得到ClsCPP.dll


第三步:运行Java调用DLL程序

把产生的ClsCPP.dll文件拷贝到第一步产生.class的同一目录。

执行命令:java pacmanDemo/Main

运行查看效果


参考资料:

http://www.cnblogs.com/charley_yang/archive/2011/03/15/1985494.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值