`
lveyo
  • 浏览: 915481 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA通过JNI调用VC的DLL

阅读更多

        JNI(Java Native Interface)是JDK的一部分,用于为Java提供一个本地代码的接口。通过使用JNI编写的程序能够确保你的代码能够完全的移植到所有的平台。JNI使得运行在JVM虚拟机上的Java代码能够操作使用其它语言编写的应用程序和库,比如C/C++以及汇编语言等。此外JNI提供的某些API还允许你把JVM嵌入到本地应用程序中。

JAVA程序要通过System.loadLibrary()调用本地DLL,JAVA程序写法如下:

package testJNI.test;

public class TestDLL {
 static{
    System.loadLibrary("TESTDLL");
 }
 
   public native static int testOutput(int iPort, int iBit);
}

DLL文件名要为TESTDLL.DLL,并且定义了一个本地方法int testOutput(int iPort, int iBit);

先用javac将java文件编译为class,然后用javah TestDLL生成一个.H的头文件。这个头文件就包括了

JNIEXPORT jint JNICALL Java_testJNI_test_TestDLL _testOutput
  (JNIEnv *, jclass,jint,jint);

这个是testOutput方法的C++定义,把这个.H的头文件加入到VC++编写的DLL程序中

JNIEXPORT jint JNICALL Java_testJNI_test_TestDLL _testOutput
  (JNIEnv *, jclass, jint iPort, jint iBit)
{
      return iPort+iBit;
}

重新编译这个DLL程序,将编译好的DLL文件复制到JDK/bin目录下,如果在tomcat下运行WEB程序时要调用DLL,就要把这个DLL文件同时复制到tomcat/bin目录下,否则程序运行时,有时会报找不到DLL的错误。

在JAVA中在调用这个就很简单了

package testJNI.test;

public class RunTestJNI{
         public static void main(String[] args){
                  TestDLL test = new TestDLL();
                  System.out.println("Result = "+test.testOutput(10,10));
         }
}

程序就会输出20的结果。在web程序里调用的方法相同。

分享到:
评论

相关推荐

    JAVA JNI调用DLL完整步骤

    本教程将详细介绍如何通过JNI在Java中调用DLL的完整步骤。 1. **创建Java类和本地方法** 首先,在Java项目中创建一个类,声明需要调用DLL中的本地方法。这些方法需要使用`native`关键字标记,并在对应的`native`...

    java调用vc的dll

    Java调用VC编写的DLL(动态链接库)是跨平台编程中的常见需求,尤其是在需要利用C++或VC++实现的高性能计算或者系统级功能时。本文将深入探讨如何在Java中调用VC编译的DLL,并提供相关知识点的详细解释。 1. **JNI...

    Java JNI调用DLL方法

    Java Native Interface (JNI) 是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。在本案例中,我们讨论的是如何使用Java ...通过以上步骤,你可以成功地在Java程序中调用VC编写的DLL,并进行调试。

    JNI DEMO:java jni技术 调用 c/c++ 的dll

    JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。...对于初学者,这是一个很好的实践教程,即使没有Java背景,也能通过提供的步骤理解和实践JNI调用DLL的过程。

    JNI实现的DEMO Java调用VC编写的DLL,对应于Linux .SO

    标题中的“JNI实现的DEMO Java调用VC编写的DLL,对应于Linux .SO”指的是一个使用Java Native Interface (JNI) 技术的示例,该示例展示了如何在Java程序中调用由Visual C++ (VC) 编译生成的动态链接库(DLL) 文件,...

    java使用JNI调用C++动态链接库(初学必备)

    Java 使用 JNI(Java Native Interface)调用 C++动态链接库是一种常见的技术,它允许 Java 代码与本地 C 或 C++代码交互,以利用 C++的高性能特性或利用已有的 C++库。以下是对标题和描述中涉及的知识点的详细解释...

    Java调用VC DLL实现串口GPS的访问.pdf

    本文主要介绍了如何使用Java通过JNI技术调用VC++编写的DLL来访问串口GPS。该方法可以实现Java和VC++共用的动态链接库设计,从而重用已经编写的VC++代码,避免代码浪费。 首先,Java语言具有跨平台和完全面向对象的...

    jni.rar,Java调用VC编译dll接口源代码

    综上所述,"jni.rar"提供了学习和实践Java通过JNI调用C++编译的DLL接口的实例。通过研究这个压缩包中的源代码,开发者可以了解如何在Java中声明和使用本地方法,以及如何在C++中实现这些方法,从而提升Java应用的...

    Java通过VC2010创建dll并调用

    ### Java通过VC2010创建DLL并调用 #### 一、概述 在软件开发过程中,有时我们需要在Java程序中调用C/C++代码,这种情况通常发生在性能要求较高或已有现成C/C++库的情况下。Java提供了JNI(Java Native Interface)...

    JNI_Demo.rar_DEMO_JNI DEMO_jni c_jni dll_vc6 dll

    总结起来,"JNI_Demo.rar"是一个关于如何在Java程序中使用JNI调用由VC6.0生成的DLL的教程。这个DEMO通过具体的代码示例展示了JNI的工作原理和实现过程,对于学习和理解JNI技术具有很好的参考价值。

    java jna 调用dll例子

    Java JNA(Java Native Access)是一种库,允许Java程序直接调用本地平台的API,无需编写C代码或使用JNI(Java Native Interface)。在本例中,“java jna 调用dll例子”指的是使用JNA在Java应用程序中调用Windows上...

    基于Java程序调用VC 中的DLL的研究与应用.pdf

    Java程序调用VC++中的DLL是通过JNI(Java Native Interface)来实现的。JNI是一种标准的API,允许Java程序调用本地代码,包括DLL。使用JNI可以使Java程序调用VC++中的DLL,从而实现Java程序和VC++程序之间的互相调用...

    JNA.jar-JNative.jar-dll创建-JAVA调用-VC调用

    标题中的“JNA.jar-JNative.jar-dll创建-JAVA调用-VC调用”涉及到的是Java平台下通过JNI(Java Native Interface)的两种实现方式,JNA(Java Native Access)和JNative,来与C/C++编写的动态链接库(DLL)进行交互...

    JAVA调用C/C++ DLL文件方法

    JNI 使用 JAVA 通过 JNI 调用本地方法,而本地方法是以库文件的形式存放的(在 WINDOWS 平台上是 DLL 文件形式,在 UNIX 机器上是 SO 文件形式)。通过调用本地的库文件的内部方法,使 JAVA 可以实现和本地机器的...

    JNI_VC6_Opencv做的dll_图片转视频

    JNI_VC6_Opencv做的图片转视频dll,其中的def有输出函数名,可以修改;在VC6下可直接编译通过;直接在eclipse中配置好后可以直接调用生成的dll。 遇到这方面需求,可以寻求帮助:415926459

    Java_JNI_VCPP_details.rar_jni_jni vc

    在本案例中,我们关注的是使用JNI调用VC++(Microsoft Visual C++)编写的函数。以下是对这一主题的详细阐述: 1. **JNI简介**: JNI是一种Java编程接口,它为Java虚拟机(JVM)提供了与本地代码交互的能力。通过...

    CVI调用VC编写的Dll文件.pdf

    不过这些语言的调用机制和C/C++略有不同,例如在Java中需要使用JNI(Java Native Interface)来调用本地方法,在C#中则使用P/Invoke,而Matlab则使用其自身的DLL调用方法。在调用过程中,需要注意数据类型和内存管理...

    JNA.jar-JNative.jar-jinvoke.jar-dll创建-JAVA调用-VC调用

    其次,`JNative.jar`是另一个用于Java本地调用的库,它通过JNI接口实现。相比于JNA,JNative提供了更底层的控制,但需要编写JNI代码,这通常涉及创建头文件、实现本地方法并进行编译。`TestJNative.java`很可能是...

    JNI VC DLL

    标题 "JNI VC DLL" 暗示了我们讨论的主题与Java Native Interface (JNI)相关,同时涉及到使用Visual C++(VC)编译的动态链接库(DLL)文件。JNI是Java平台提供的一种标准方式,允许Java代码和其他语言写的代码进行...

    JNI 调用(包含复杂对象传参)

    实现了jni 中java向vc dll传递list参数/String参数 对象的接口。vc代码可用vc6.0运行编译,java调用接口在src\common\CameraUtil.java里面。测试了好久才实现的(涉及到项目机密,部分资源文件没有上传,内部方法是...

Global site tag (gtag.js) - Google Analytics