`
cherryQQ
  • 浏览: 1125351 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JAVA调用windows下dll文件程序代码

阅读更多

JAVA调用windows下dll文件程序代码

 

java是一个很强大的程序了,它可以做很多操作,下面我来介绍在java中调用windows系统的dll文件的程序代码,各位朋友可参考参考。
 

JNA(Java Native Access):建立在JNI之上的Java开源框架,SUN主导开发,用来调用C、C++代码,尤其是底层库文件(windows中叫dll文件,linux下是so【shared object】文件)。

JNI是Java调用原生函数的唯一机制,JNA就是建立在JNI之上,JNA简化了Java调用原生函数的过程。JNA提供了一个动态的C语言编写的转发器(实际上也是一个动态链接库,在Linux-i386中文件名是:libjnidispatch.so)可以自动实现Java与C之间的数据类型映射。从性能上会比JNI技术调用动态链接库要低。

1.简单写个windows下的dll,文件命名为forjava.dll,其中一个add函数,采用stdcall调用约定

java是一个很强大的程序了,它可以做很多操作,下面我来介绍在java中调用windows系统的dll文件的程序代码,各位朋友可参考参考。
 

JNA(Java Native Access):建立在JNI之上的Java开源框架,SUN主导开发,用来调用C、C++代码,尤其是底层库文件(windows中叫dll文件,linux下是so【shared object】文件)。

JNI是Java调用原生函数的唯一机制,JNA就是建立在JNI之上,JNA简化了Java调用原生函数的过程。JNA提供了一个动态的C语言编写的转发器(实际上也是一个动态链接库,在Linux-i386中文件名是:libjnidispatch.so)可以自动实现Java与C之间的数据类型映射。从性能上会比JNI技术调用动态链接库要低。

1.简单写个windows下的dll,文件命名为forjava.dll,其中一个add函数,采用stdcall调用约定

 

main.h文件
#ifndef __MAIN_H__
#define __MAIN_H__
 
#include <windows.h>
 
/*  To use this exported function of dll, include this header
 *  in your project.
 */
 
#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport) __stdcall
#else
    #define DLL_EXPORT __declspec(dllimport) __stdcall
#endif
 
#ifdef __cplusplus
extern "C"
{
#endif
 
int DLL_EXPORT add(int a,int b);
 
#ifdef __cplusplus
}
#endif
 
#endif // __MAIN_H__

main.cpp

#include "main.h"
 
// a sample exported function
int DLL_EXPORT add(int a ,int b)
{
    return a+b;
}
 
extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
        case DLL_PROCESS_ATTACH:
            // attach to process
            // return FALSE to fail DLL load
            break;
 
        case DLL_PROCESS_DETACH:
            // detach from process
            break;
 
        case DLL_THREAD_ATTACH:
            // attach to thread
            break;
 
        case DLL_THREAD_DETACH:
            // detach from thread
            break;
    }
    return TRUE; // succesful
}

 

 

2.将jna.jar导入eclipse工程中,java代码如下

 

//import com.sun.jna.Library; cdecl call调用约定 
import com.sun.jna.Native; 
import com.sun.jna.Platform; 
import com.sun.jna.win32.StdCallLibrary; 
  
public class main { 
  
    public interface CLibrary extends StdCallLibrary { //cdecl call调用约定时为Library 
        CLibrary INSTANCE = (CLibrary)Native.loadLibrary("forjava",CLibrary.class); 
        public int add(int a,int b); 
    } 
  
    public static void main(String[] args) { 
        System.out.print(CLibrary.INSTANCE.add(2,3)); 
    } 
}

 

 

 

 

 

分享到:
评论

相关推荐

    Java调用Labview生成的DLL文件

    1、Labview生成Dll文件 2、Java通过Jnative第三方Jar包调用Labview生成的DLL文件 3、Java在Windows系统调用Labview生成的Dll的说明 有JNative的使用说明 直接下载,根据使用说明可以直接使用。

    Java中使用Jacob实现Windows下语音合成并生成音频文件示例代码.rar

    Java中使用Jacob实现Windows下语音合成并生成音频文件示例代码.rar

    JNI--java调用不同平台的动态链接库,dll,so,完美,全教程

    我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦...使用 JNA ,不需要再编写适配用的 .dll/.so ,只需要在 Java 中编写一个接口和一些代码,作为 .dll/.so 的代理,就可以在 Java 程序中调用 dll/so 。

    java调用dll最简单的方法

    在Java中调用DLL(Dynamic Link Library)文件,可以使用Java的本地方法接口(JNI,Java Native Interface)来实现。JNI允许Java程序与本地代码进行交互,从而实现跨平台的功能。

    科大讯飞语音合成示例(离线版本) java可调用 dll so封装

    提供java jni示例程序,linux so工程,windows dll工程,将科大讯飞语音合成程序封装成windows支持的dll和linux支持的so并且导出api,java使用jni直接调用。代码均已编译测试通过,需要appid和mscdll则可以自己去...

    在windows中jni(生成dll)Linux中jni(生成so),java调用曾c++

    该软件主要是介绍,java如何调用才c++程序,并且如何在visaul c++中用命令行cl生成dll文件。

    使用C++语言实现基于JVMTI机制的 JAVA 代码 加密保护工具

    众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆方式,这种方式对于Class文件的加密是不彻底...

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    Java类文件加密专家

    传统的Java程序加密的方式多为代码混迹方式,但是无论多么复杂的混迹方式,在使用Java代码反编译程序后还是可以看到代码的逻辑结构,这样并没有彻底的保护好您的代码。 Java 类文件加密专家通过分析Class文件的结构...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    用java程序调用ffmpeg执行视频文件格式转换flv

    ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,...pncrt.dll这3个文件是为文件格式(wmv9,rm,rmvb等) 转换为avi(ffmpeg能解析的)格式准备的;再把转换好的avi文件再用ffmpeg.exe转换成flv格式的视频文件。。。

    CSharp-calls-JAVA-program.rar_C#调用java的dll_c# 调用 java sdk_c#调用ja

    在C#环境下调用JAVA程序的实例代码,添加dll文件后,引用package ,创建环境变量,即可调用java写的类及构造方法

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    Java本地调用c+opencv生成的DLL

    和我一篇博文相关联的程序。 主要是用java本地调用c+opencv生成的dll dll已经生成好了,生成dll的代码还不方便放网上,有机会在分享吧。。。

    java调用AutoCAD接口绘图工具类

    利用Jacob调用AutoCAD接口绘图,实现绘制图形,不是调用Windows绘制图形界面,是真正的调用AutoCAD绘图,只是给了测试代码,具体功能自己摸索

    JNI实例 Java调用DLL c++调用Java

    该Demo有两个主要的例子,一个实现的是在java程序中调用DLL中的方法;而一个则是讲述如何在C++代码中调用Java类中的方法、详细阐述了JNI机制的使用,是一个很好的学习例子。

    Java开发技术大全(500个源代码).

    dir.java 显示目录下的所有文件和目录 encrypt.java 文件加密 FileList.java 自己实现的一个文件名称枚举类 MyDataIO.java 数据输入输出示例 MyFileOutput.java 将键盘读入的文字保存到文件 MyPipedIO.java ...

    JNI技术手册 c/c++调用java

    2、 JAVA调用DLL 41 1) 将hello.dll拷贝到Java工程JavaHello下。 41 2) 运行Hello.java,则可以看到输出结果: 41 1) 将Hello.c改为Hello.cpp 41 2) 将makefile内容改为: 41 3) 其他的几乎都不用改变也可以。 42 ...

    java源码包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包4

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

Global site tag (gtag.js) - Google Analytics