菜鸡爬坑 基础知识  
因为某个东西的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)的更多相关文章

  1. JAVA调用动态链接库DLL之JNative学习

    package com.ehfscliax; import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import ...

  2. paip.java 调用c++ dll so总结

    paip.java 调用c++ dll so总结 ///////JNA (这个ms sun 的) 我目前正做着一个相关的项目,说白了JNA就是JNI的替代品,以前用JNI需要编译一层中间库,现在JNA ...

  3. Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()

    Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...

  4. 巧用C#做中间语言 实现Java调用.net DLL

    本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!” 环境与工具: ◆.net framework ...

  5. [JNI] Java 调用 C++ dll

    首先介绍一下JNI吧! JNI 是Java提供的一个用于调用本地接口的接口层,位于Java代码 和 本地代码之间的一层:主要功能是 数据类型的转换,还有就是通过这一层来调用本地代码! 下面就说说Jav ...

  6. BCB如何编写,调用动态链接库DLL

    一 编写动态链接库DLL DLL简称动态链接库,是Windows中程序的重要组成部分.想象一下,一个程序需要多人共同完成开发,怎么个共同法?这时我们就要考虑把程序分为好几个模块,团队每一个成员开发一个 ...

  7. LR调用动态链接库DLL

    什么是动态库? 动态库一般又叫动态链接库(DLL),是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库. 动态链接提供了一种方法 ,使进程可以 ...

  8. 使用java访问 动态链接库(dll)

    在这个时候,我们可以使用的java技术有jni.jna.jnative,这个大部分都可以完成任务.但是有时候我们在实际情况中拿到的dll有变化,当我们需要用的函数是在dll中的类里面的话,我们再使用前 ...

  9. java调用C++ DLL库方法

    最近一个项目要开发网页端人脸识别项目,人脸识别的算法已经写好,是C++版,但是网页端要求使用Java后台,这就涉及到Java调用DLL的问题.经过查找,实现了一个简单的例子. 1.第一步,先在Java ...

随机推荐

  1. Spark学习之在集群上运行Spark(6)

    Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算 ...

  2. 使用Jenkins进行android项目的自动构建(2)

    Maven and POM 1. 什么是Maven? 官方的解释是: http://maven.apache.org/guides/getting-started/index.html#What_is ...

  3. 面试必备【含答案】Java面试题系列(二

    1.写clone()方法时,通常都有一行代码,是什么?答:super.clone(),他负责产生正确大小的空间,并逐位复制. 2.GC 是什么? 为什么要有GC?答:GC 是垃圾收集的意思(Gabag ...

  4. eigenface资料整合

    把图片映射到能最好区分的空间(pca),在这个空间同类是聚集的,而不同类之间间隔大.这相当于一个模型,把验证集也映射到此空间,然后利用knn对验证集分类. pca:https://wenku.baid ...

  5. WPF学习- 新建项目后自定义Main()[Type 'App' already defines a member called 'Main' with the same parameter types]

    问题点: 在App.xaml.cs中自己添加Main方法,编译会出现如下报错: 错误 CS0111 类型“App”已定义了一个名为“Main”的具有相同参数类型的成员  错误 Type 'App' a ...

  6. SQL GROUP BY 和 ORDER BY 区别

    order by 是按表中某字段排列表中数据group by 是按某些字段分类. 例如按 1.按年龄排序表中的记录select * from users order by age 2.按年龄分类表中数 ...

  7. Java集合(二)--Iterator和Iterable

    Iterable: public interface Iterable<T> { Iterator<T> iterator(); } 上面是Iterable源码,只有一个ite ...

  8. numpy add

    在numpy中,'+' 和add 是一样的 np.add(x1, x2) x1+x2 有种特殊情况需要注意,x1和x2的shape不一样的加法: 两个shape不一样的array相加后会变成一个com ...

  9. vue工程化

    很多人在玩完了官方文档的小例子之后,又不知道如何下手了.所以我这边帮大家把断层补上.大家首先要把vue的基本语法都熟悉了,然后再来这边学习. 有了前面webpack的铺垫,我们直接从vue的工程化开始 ...

  10. Myeclipse中dubug调试出现参数显示的框

    1.步骤: window>show view>variables 结果: