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 ...
随机推荐
- vue 2.0 路由创建的详解过程
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 微信小程序组件解读和分析:十四、slider滑动选择器
slider滑动选择器组件说明: 滑动选择器. slider滑动选择器示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 ...
- iOS Programming UINavigationController
iOS Programming UINavigationController the Settings application has multiple related screens of info ...
- 【数据分析 R语言实战】学习笔记 第三章 数据预处理 (下)
3.3缺失值处理 R中缺失值以NA表示,判断数据是否存在缺失值的函数有两个,最基本的函数是is.na()它可以应用于向量.数据框等多种对象,返回逻辑值. > attach(data) The f ...
- Farseer.net轻量级ORM开源框架说明及链接索引
项目简介 基于.net framework 4 开发. 基于Lambda表达式快速上手的ORM框架. 参考Entity Framework的调用方式. 基于Database First模式. POCO ...
- php从mysql数据库中取数据
php从数据库中取数据 面向过程 <?php $server_name="localhost:3306"; //数据库服务器名称 $username="root& ...
- CentOS 6.4 linux下编译安装 LNMP环境
1.nginx编译安装 2.PHP编译安装 3.mysql编译安装 4.NGINX配置模板 5.CentOS 6.4 php-fpm 添加service 添加平滑启动/重启
- q-oo-p , a piggy domain name. Very cute. boyan.zheng at foxmail.com
Contact me.
- Codeforces_B.Maximum Sum of Digits
http://codeforces.com/contest/1060/problem/B 题意:将n拆为a和b,让a+b=n且S(a)+S(b)最大,求最大的S(a)+S(b). 思路:考虑任意一个数 ...
- iView webapp / Mint UI / MUI [前端UI]
前端UI iView webapp一套高质量的 微信小程序 UI 组件库 https://weapp.iviewui.com/?from=iview Mint UI 基于 Vue.js 的移动端组件库 ...