首页 > 编程语言 >Java 调用Dll

Java 调用Dll

时间:2022-11-08 10:33:32浏览次数:38  
标签:调用 Java -- com dll DllTest calldll include Dll


Java 中怎么能调用到dll中的函数呢?

关键是java中生的本地函数名参数和dll中的本地函数名参数一模一样。


这个程序是java中调用dll中的求和函数。


一,java代码部分操作


1.新建工程

Java 调用Dll_头文件

2.DllTest.java代码


package com.aizizai.calldll;

public class DllTest {

static {

System.loadLibrary("hellodll");
}

public static native int sum(int a, int b);

public static void main(String[] args) {
System.out.println("sum(2,5) = " + sum(2, 5));
}

}


3. 生成头文件


Java调用dll测试\src>javac com/aizizai/calldll/DllTest.java
Java调用dll测试\src>javah com.aizizai.calldll.DllTest


二,VC利用前面的头文件生成dll。本文使用的是vs2010。


1. 创建项目

新建项目--> vc++ --> win32项目 --> 命名为hellodll -->应用程序类型:dll -->ok。

2. 添加头文件

a. 把


/jdk/include/jni.h

/jdk/include/win32/jawt_md.h

/jdk/include/win32/jni_md.h

拷到项目目录下或者Vs的include目录下。



b. stdafx.h中添加


#include "com_aizizai_calldll_DllTest.h"


3. 在源文件中添加函数实现


// hellodll.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"

JNIEXPORT jint JNICALL Java_com_aizizai_calldll_DllTest_sum
(JNIEnv *env, jclass ss, jint a, jint b){
return a+b;
}


4. 生成dll

生成 ---> 生成dll。

即可在项目的Debug目录下看到,hellodll.dll文件


三,使用

把dll文件拷到 c:\windows目录下,运行java程序。ok。

Java 调用Dll_java_02










标签:调用,Java,--,com,dll,DllTest,calldll,include,Dll
From: https://blog.51cto.com/u_13316945/5832011

相关文章

  • 8 个常用的JavaScript 比较运算符,你一定要知道
    英文|https://javascript.plainenglish.io/the-8-javascript-comparison-operators-you-need-to-know-cb952090d087翻译| 杨小爱1、相等我们将讨论的第一个比较运算符是......
  • 【JavaScript 教程】第六章 数组03— Stack :使用 Array 的push()和pop()方法实现堆栈
    英文 | https://www.javascripttutorial.net/译文|杨小爱在上节,我们学习了JavaScriptArray length属性以及如何正确处理它,错过的小伙伴可以点击文章《​​【JavaScrip......
  • Java 学习的总结
    1.JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验......
  • Java枚举
    Java枚举目录Java枚举  知识点  概念  枚举的方法  枚举的特性  枚举的应用场景  EnumSet和EnumMapJava枚举知识点概念enum 的全称为enumeration,是JDK......
  • Java 散乱脚本整理
     杀死所有java进程  taskkill/f/t/imjava.exe 清理打包@echooffecho.echo[信息]清理工程target生成路径。echo.%~d0cd%~dp0cd..callmvnc......
  • java web基础
    1.JavaWeb模块结构JSP文件和AXPX文件类似,路径和URL一一对应,都会被动态编译为单独class。JavaWeb和ASP.NET的核心是分别是Servlet和IHttpHandler接口,因此无论是基础的Pag......
  • JavaScript数组去重—ES6的两种方式
    说明JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种......
  • Java实例化静态字段及静态块
    首先,示例来自BruceEckel的《OnJava》://housekeeping/ExplicitStatic.java//(c)2021MindViewLLC:seeCopyright.txt//Wemakenoguaranteesthatthiscodeis......
  • JAVA笔记
    inti=10;i++;//单独使用System.out.println("i:"+i);//i:11intj=10;++j;//单独使用System.out.println("j:"+j);//j:11intx=10;inty=x++;//赋......
  • 谜题:打造极小ELF文件输出文件(使用汇编语言通过系统调用来实现)
    接上文《谜题:打造极小ELF文件输出文件(通过C语言来实现)》在本篇中,我们要写出一段直接通过系统调用的方式、且使用尽可能少的指令的汇编代码来实现目标。可以省略的代码,就......