JAVA调用动态链接库(dll)
因为某个东西的keygen我只会在win下生成!! 所以只能出此下策!!
之前一直是android下用jni调用so文件,现在试下java在win平台下调用dll 首先还是老套路,直接在dll中弹出一个信息框具体流程如下:在Java中定义一个方法,在C++中实现这个方法,在方法内弹出信息框.
首先在java中定义一个类
package cn.ylca.dll;
public class DllEntity {
//本地方法
public native void messagebox();
}
第二步 控制台到bin目录下
使用javah生成DllEntity 的头文件
生成文件内容如下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class cn_ylca_dll_DllEntity */ #ifndef _Included_cn_ylca_dll_DllEntity
#define _Included_cn_ylca_dll_DllEntity
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: cn_ylca_dll_DllEntity
* Method: messagebox
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_cn_ylca_dll_DllEntity_messagebox
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif
第三步新建一个dll的项目
然后把刚才生成的内容复制到cpp文件 到这里还需要一个jni.h头文件 到jdk目录下 include 文件中复制一份
代码如下
// javadll.cpp : Defines the entry point for the DLL application.
// #include "stdafx.h"
#include <stdio.h>
#include <windows.h>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class cn_ylca_dll_DllEntity */ #ifndef _Included_cn_ylca_dll_DllEntity
#define _Included_cn_ylca_dll_DllEntity
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: cn_ylca_dll_DllEntity
* Method: messagebox
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_cn_ylca_dll_DllEntity_messagebox
(JNIEnv *env, jobject obj){//补上参数名字 //到这里就不许要再说什么的了把!
MessageBox(NULL, "测试!", "demo", 0);
} #ifdef __cplusplus
}
#endif
#endif
第四步就是如何在java中使用了 创建一个测试类来调用
public class Test {
public static void main(String[] args) {
//加载指定路径的dll
System.load("D://javadll//Debug//javadll.dll");
//创建本地方法对象
DllEntity dllEntity = new DllEntity();
//调用方法
dllEntity.messagebox();
}
JAVA调用动态链接库(dll)的更多相关文章
- JAVA调用动态链接库DLL之JNative学习
package com.ehfscliax; import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import ...
- paip.java 调用c++ dll so总结
paip.java 调用c++ dll so总结 ///////JNA (这个ms sun 的) 我目前正做着一个相关的项目,说白了JNA就是JNI的替代品,以前用JNI需要编译一层中间库,现在JNA ...
- Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
- 巧用C#做中间语言 实现Java调用.net DLL
本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!” 环境与工具: ◆.net framework ...
- [JNI] Java 调用 C++ dll
首先介绍一下JNI吧! JNI 是Java提供的一个用于调用本地接口的接口层,位于Java代码 和 本地代码之间的一层:主要功能是 数据类型的转换,还有就是通过这一层来调用本地代码! 下面就说说Jav ...
- BCB如何编写,调用动态链接库DLL
一 编写动态链接库DLL DLL简称动态链接库,是Windows中程序的重要组成部分.想象一下,一个程序需要多人共同完成开发,怎么个共同法?这时我们就要考虑把程序分为好几个模块,团队每一个成员开发一个 ...
- LR调用动态链接库DLL
什么是动态库? 动态库一般又叫动态链接库(DLL),是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库. 动态链接提供了一种方法 ,使进程可以 ...
- 使用java访问 动态链接库(dll)
在这个时候,我们可以使用的java技术有jni.jna.jnative,这个大部分都可以完成任务.但是有时候我们在实际情况中拿到的dll有变化,当我们需要用的函数是在dll中的类里面的话,我们再使用前 ...
- java调用C++ DLL库方法
最近一个项目要开发网页端人脸识别项目,人脸识别的算法已经写好,是C++版,但是网页端要求使用Java后台,这就涉及到Java调用DLL的问题.经过查找,实现了一个简单的例子. 1.第一步,先在Java ...
随机推荐
- 短视频SDK简单易用——来自RDSDK.COM
锐动天地为开发者提供短视频编辑.视频直播.特效.录屏.编解码.视频转换,等多种解决方案,涵盖PC.iOS.Android多平台.以市场为导向,不断打磨并创新技术,在稳定性,兼容性,硬件设备效率优化上千 ...
- spark on yarn模式下内存资源管理(笔记1)
问题:1. spark中yarn集群资源管理器,container资源容器与集群各节点node,spark应用(application),spark作业(job),阶段(stage),任务(task) ...
- VM virtualBox设置无缝全屏
设置之前:
- 翻译:高级t - sql第1级的阶梯:使用交叉连接来引入高级t - sql
高级t - sql第1级的阶梯:使用交叉连接来引入高级t - sql 源于:格雷戈里·拉森,2016/02/19(首次出版:2014/12/17 翻译:刘琼滨 谢雪妮 徐雅莉 赖慧芳 链接:http: ...
- 洛谷 P1339 [USACO09OCT]热浪Heat Wave (堆优化dijkstra)
题目描述 The good folks in Texas are having a heatwave this summer. Their Texas Longhorn cows make for g ...
- 谈谈Java中的集合
对于集合类,主要需要掌握的就是它的内部结构,以及遍历集合的迭代模式. 接口:Collection Collection是最基本的集合接口,一个Collection代表一组Object,即Collect ...
- 6-Java-C(无穷分数)
题目描述: 无穷的分数,有时会趋向于固定的数字. 请计算[图1.jpg]所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0. 请填写该浮点数,不能填写任何多余的内容. 正确算法: 此题 ...
- js 或jquery定义方法时,参数不固定是怎么实现的
//①不定义接受参数的方式来接受参数(arguments) function getparams(){ //利用arguments来接受参数,arguments表示参数集合, //里面存放的调用这个方 ...
- eclipse 的开发环境配置
一.基础环境设置 1.jdk下载配置 2.JRE下载配置 3.Eclipse下载 4.Eclipde 与JRE配置,见图 二.PHP环境设置 1.apache + PHP 配置. 详见随笔文章:Ecl ...
- JAVA基础——设计模式之观察者模式
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependen ...