`
cherryQQ
  • 浏览: 1135980 次
  • 性别: 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程序中使用JNative调用dll文件

    1. **创建DLL**:首先,你需要使用C或C++编写一个DLL文件,其中包含将被Java调用的函数。这些函数需要按照JNI的规范来编写,即使用`JNIEXPORT`和` JNICALL`宏,以及指定函数返回类型和参数类型的`JNINativeMethod`...

    JAVA调用C#的DLL文件

    ### JAVA调用C# DLL文件的关键步骤和技术细节 #### 一、C#编写COM组件 在实际工作中,可能需要在不同编程语言之间进行交互。例如,一个基于Java的应用程序可能需要调用用C#编写的DLL文件来实现某些功能。这通常...

    java调用DLL文件

    首先,理解DLL文件:DLL(Dynamic Link Library)是Windows操作系统中的一个共享库,它包含了一组可执行函数和资源,可供多个应用程序同时使用,以节省内存并促进代码复用。 JNative是Java中用于调用本地方法的一个...

    亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

    Java调用DLL函数是跨平台编程中的一种常见需求,特别是在Java与C/C++代码交互时。JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如DLL文件)的函数,而无需编写JNI(Java Native ...

    java调用C#封装的dll方法

    - **添加依赖:** 在Java环境中引入`jacob.jar`库,并将`jacob-1.16-M1-x86.dll`文件复制到`C:\Windows\System32`目录下。 - **注册C#组件:** 使用`regasm`工具注册`COMTest.dll`和`COMTest.tlb`。 - **实现Java...

    Java通过JNI调用C++的DLL文件.docx

    Java 应用程序与 C++ DLL 文件集成需要以下步骤:创建一个 Java 工程,生成 `.class` 文件,使用 `javah` 命令生成 `.h` 头文件,创建一个 C++ 工程,并将生成的 `.h` 头文件复制到工程中,编写 C++ 代码,并将其...

    JAVA调用C#写的DLL例子

    在本篇文章中,我们将详细介绍如何使用 JAVA 调用 C# 编写的 DLL 文件。首先,我们需要了解什么是 DLL 文件,以及它在编程中的应用。 DLL 文件是一种动态链接库文件,它可以被多个程序同时使用,减少了代码的重复...

    java使用jawin调用dll文件

    通过以上步骤,你可以在Java应用程序中成功地使用JAWIN调用DLL函数。不过,需要注意的是,这种方法并不适用于所有情况,尤其是当DLL函数使用了复杂的C++特性,如虚函数、模板等。在这种情况下,可能需要使用更底层的...

    非常好用java调用c++ dll文件demo

    Java调用C++ DLL文件是跨语言编程中的一个重要应用场景,特别是在既有Java代码库又有C++动态链接库的情况下。本文将详细讲解如何在Java程序中调用C++编写的DLL文件,以及一个可用的示例。 首先,理解Java与C++交互...

    JAVA调用DLL方法 JAVA调用DLL方

    通过本文的介绍,我们可以看到Java调用DLL文件不仅可行,而且有多种方式可以选择。其中,JNative提供了一种简单直接的方法,大大降低了调用本地库的难度。对于那些希望利用Java的强大功能同时又需要调用特定DLL文件...

    Java调用Qt DLL

    Java调用Qt DLL是一个跨平台的技术实践,涉及到Java与C++之间的互操作性,其中Qt是一个流行的C++库,主要用于图形用户界面开发。这个主题主要包含以下几个知识点: 1. **JNI(Java Native Interface)**:JNI是Java...

    java调用ocx控件,jacob,jar和dll文件

    Java调用OCX控件是跨平台编程中的一项技术挑战,因为OCX(Object Linking and Embedding Control)是微软Windows环境下的组件对象模型(COM)控件。然而,通过第三方库如Jacob(Java和COM的桥梁),Java开发者能够在...

    java dll文件调用的几种方式

    Java DLL文件调用是将Java程序与本地C/C++库集成的关键步骤,这对于利用Java的跨平台特性同时利用原生库的功能至关重要。在Java中,我们通常使用Java Native Interface (JNI)来实现对DLL文件的调用。下面将详细介绍...

    Java调用dll文件开源组件jar包及说明文档

    `JNative-1.3.2`是一个开源组件,专门设计用于帮助Java应用程序调用Windows平台上的DLL(动态链接库)文件,同时也支持Linux平台下的SO(共享对象)文件。下面我们将详细介绍这个组件的使用方法、工作原理及相关知识...

    Java调用动态链接库(Java 调用 DLL)

    至于提供的压缩包文件`ttsDemo`,可能是演示如何使用Java调用语音合成(TTS,Text To Speech)的DLL库。在这个示例中,可能包含了一个DLL文件以及相应的Java代码,演示了如何通过JNI或JNA来调用DLL中的TTS功能。具体...

    Java调用DLL源代码

    Java调用DLL是Java开发中一个重要的技术主题,它允许Java程序与本地操作系统API或者其他C/C++编写的动态链接库进行交互。在Java中,有多种方法可以实现这个功能,其中最常用的是Java Native Interface (JNA) 和 ...

    [测试通过]JAVA调用第三方DLL的简单方法:JNA及DEMO

    首先,我们来看标题中的关键点:“JAVA调用第三方DLL的简单方法”。在Java中,由于其跨平台的特性,原生与操作系统交互并不直接,而JNA提供了一种桥接机制,使得Java可以直接调用Windows、Linux等操作系统中的DLL...

    java调用dll文件的实例

    Java调用DLL文件是将Java程序与C/C++编写的动态链接库集成的一种技术,主要通过JNI(Java Native Interface)来实现。JNI是Java平台的标准部分,它允许Java代码和其他语言写的代码进行交互。在本实例中,我们将探讨...

    java调用vc的dll

    JNI是Java调用C/C++代码的主要桥梁,包括VC编写的DLL。在Java中,我们需要定义一个本地方法接口,通过JNI头文件生成器(javah)生成对应的C/C++头文件,然后在C/C++代码中实现这些方法,最后编译成DLL。 2. **导出...

Global site tag (gtag.js) - Google Analytics