`

Java调用VC的dll

 
阅读更多

package com.org.test;

import org.xvolks.jnative.JNative;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;
import org.xvolks.jnative.Type;

public class EyPatrol {
        /**
         * return 转换成功的字节数
         */
        static JNative Something = null;

        static Pointer pointer;

        static int hComDev;
        
        
        public  int  getSomething() throws NativeException, IllegalAccessException {
        int rev =-1 ;
                try {
                        if (Something == null) {
                                Something = new JNative("eyPatrol.dll", "connect_hd");
                                Something.setRetVal(Type.LONG); // 指定返回参数的类型
                        }
                        int i = 0;
                        pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(32));
                        pointer.setIntAt(0, 32);
                        Something.setParameter(i++,"123");
                        Something.setParameter(i++,pointer);
                        Something.setParameter(i++,115200);
                        System.out.println("调用的DLL文件名为:" + Something.getDLLName());
                        System.out.println("调用的方法名为:" + Something.getFunctionName());
            System.out.println("*****"+pointer.asLONG());
                        Something.invoke();// 调用方法
            rev = Something.getRetValAsInt();
            if(rev!=0)
                    System.out.println("连接失败");
            else 
                    System.out.println("连接成功");
                        hComDev = Something.getFunctionPointer(); // 供给其他函数调用
            System.out.println("---"+Something.getStyle());
            System.out.println("---"+Something.getFunctionPointer());
                        return Integer.parseInt(Something.getRetVal());
                }

                catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        System.out.println("执行建立连接完毕!");
                }
             return rev ;
        }

        public static void main(String[] args) throws NativeException,
                        IllegalAccessException {
                EyPatrol uc = new EyPatrol();
                int result = uc.getSomething();
                System.err.println("连接端口句柄为:" + result);
                if (Something != null)
                        Something = null;
        }
}

分享到:
评论

相关推荐

    java调用vc的dll

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

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

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

    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调用DLL完整步骤

    总结,Java调用DLL的完整步骤包括:定义Java的`native`方法,使用`javah`生成头文件,编写C/C++ DLL代码,编译DLL,最后在Java程序中调用。这个过程可能需要对JNI规范有深入理解,以及一定的C/C++编程基础。通过熟练...

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

    在本案例中,“jni.rar”是一个压缩包,包含了使用Java调用由VC(Visual C++)编译的动态链接库(DLL)接口的源代码。这种技术常用于Java应用程序需要利用本地系统功能或优化性能时,因为某些操作C/C++可能更为高效...

    java jna 调用dll例子

    在“VC400_test_jna”这个文件中,可能包含了一个测试项目或者示例代码,它演示了如何使用JNA来调用大华SDK的DLL进行视频播放操作。具体实现细节可能包括设置解码器、创建播放窗口、控制播放状态、处理视频数据流等...

    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通过VC2010创建dll并调用

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

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

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

    Java JNI调用DLL方法

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

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

    "基于Java程序调用VC++中的DLL的研究与应用" 本文讨论了基于Java程序调用VC++中的DLL的研究与应用。随着计算机普及率的提升和软件行业的飞速发展,计算机语言也越来越受到广大计算机爱好者和计算机软件开发人员的...

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

    JAVA调用C/C++ DLL文件方法 JAVA 调用 C/C++ 库文件(DLL)是 Java 语言与 C/C++ 语言之间的交互方式之一。在 Java 中,存在多种调用 C/C++ 库文件的方式,包括 JNI、JNative、Jawin 和 Jacob 等。其中,JNI(Java ...

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

    总的来说,这个压缩包提供了Java调用C/C++ DLL的各种方法的实例,对于理解跨语言通信和本地库调用有很好的学习价值。无论是使用JNA的简洁性,还是JNative和jinvoke的灵活性,都能帮助开发者根据具体需求选择合适的...

    Vc 调用matlab以dll形式调用m文件

    标题"Vc 调用matlab以dll形式调用m文件"正是讨论了这个主题,通过创建DLL,我们可以将MATLAB的计算能力集成到C++应用程序中。以下是关于这个主题的详细解释: 1. **MATLAB M文件**: M文件是MATLAB的主要脚本文件...

    java调用dll和ocx的开源控件

    Java调用DLL和OCX是跨语言交互的一个重要应用场景,主要涉及到Java的本地接口(Java Native Interface,JNI)和第三方库如Jacob项目。Jacob是一个Java和COM(Component Object Model)之间桥梁的开源库,它允许Java...

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

    "callDll"可能是Java代码中调用DLL的示例或测试类。它将加载JNI接口并执行get()和set()方法,从而与C/C++实现的DLL进行交互。 总结来说,这个"JNI DEMO"是一个完整的示例,展示了如何使用Java的JNI技术来调用C/C++...

    JAVA 调用twain

    资源中包含java使用jna调用自己开发的twain.dll的所有源代码,自测能够实现简单扫描。 本人一直使用java 对c++程序不熟悉,现在这个twain.dll只能取得默认源,并且也弹不出来源的设置对 话框,应该是dllmain的消息...

    PB调用java组件SatJni

    SatJni是C++编写的动态链接库,实现了C#,PB,Delphi,VB,VC等对Java的调用,能让你很容易地调用成熟的java类库和第三方java组件。不用再为移值java代码而烦恼。 示例中演示了PB调用webservice服务(无需代理对象)得到...

    JAVA与VC混合编程

    开发者可以编写C/C++的动态链接库(DLL),然后在JAVA中通过JNI调用这些函数,实现对底层系统的访问或者提升性能。 2. **JNA(Java Native Access)**:JNA是另一种调用本地库的方法,比JNI更易于使用,但可能在...

    java dll 得到cpu id

    当Java调用这个native方法时,实际会执行DLL中的相应函数,从而获取CPU ID。 具体步骤如下: 1. 使用VC创建DLL项目,编写C++代码,包含获取CPU ID的函数,例如: ```cpp extern "C" __declspec(dllexport) void __...

Global site tag (gtag.js) - Google Analytics