`
aigo
  • 浏览: 2635719 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

调试JNI DLL的两种方式

 
阅读更多

一,附加方式

1,eclipse链接库引用到vs的debug目录下 ,例如:

System.load("E:\\vcproject\\debug\\test.dll");

 

2,在C++的被调用方法中写入一个死循环。

 

3,eclipse 运行java程序,调用dll库方法,这是就卡在DLL内部的死循环中

 

4,在C++的死循环内设置断点,VS中debug属性命令里面:E:\Java\jdk1.7.0_15\bin\java.exe 设置“附加”为 是

 

5,VS点击调试,就进到C++的死循环中了,跳出死循环就可以开始调试了

这种方式也可以用来实现远程调试JNI DLL,不同之处就是要进行远程调试相关的设置,这里就不讲了。

 

 

 

 

二,常规调试

 

1,eclipse链接库引用到vs的debug目录下 ,例如:

System.load("E:\\vcproject\\debug\\test.dll");

 

2,设置工程属性

Command设为java命令的路径,例如:D:\Java\jdk1.7.0_15\bin\java.exe 

Command Arguments设为需要的java启动参数,例如:-cp .;resource;lib\*; com.test.MyJNI

Working Directory设置为java工程的根目录(这里是部署目录,不是IDE中的开发环境目录,因为这里调试是通过命令行启动虚拟机的,所以无法通过IDE启动java项目)



 

 

 

3,在JNI的C++代码中中打好断点,点击debug,当java项目运行到JNI调用位置时,就捕获到断点进行调试了。

注意,这里的dll一定要是debug版本且需要生成PDB文件,如果禁用了PDB生成,需要设置generate debug info为yes



 

  • 大小: 18.5 KB
  • 大小: 41.3 KB
分享到:
评论

相关推荐

    springboot+jna/jni调用动态so/dll库

    它涉及到Spring Boot应用如何利用Java Native Interface (JNI) 和 Java Native Access (JNA) 这两种技术来调用操作系统级别的动态链接库(.so for Linux, .dll for Windows)。 **Spring Boot** Spring Boot是...

    JNI 完全技术手册

    JNI将这两种优势结合起来,使得开发者能够充分利用不同语言的特点。 ### JNI 完全手册知识点: #### 1. JNI 定义与设计目的 JNI定义了Java和本地应用之间交互的接口,它允许Java代码调用本地应用程序接口(如C/C++...

    使用jni和DES实现两次加密

    总结来说,这个工程实例展示了如何结合使用JNI和DES加密来增强数据安全性,同时提供了学习和实践这两种技术的资源。通过深入研究和分析这个项目,开发者可以更好地理解JNI的工作原理,以及如何在Java中实现并应用...

    jniDemo.7z

    在本示例中,"jniDemo.7z" 包含了使用JNI方式调用第三方DLL的测试项目。这个测试涉及到两个DLL文件,以及相关的Java源代码。 首先,我们有"JniTest.dll" 和 "JniDll.dll"。这两个动态链接库(DLL)文件在Windows...

    美图动态链接库和JNI类文件

    7. **调试与测试**:由于涉及到跨语言编程,调试JNI代码可能比较复杂。可以使用NDK提供的工具如gdb进行原生代码调试,同时,确保在各种设备和Android版本上进行充分的测试,以保证兼容性和稳定性。 总之,"美图动态...

    C++库封装JNI接口-实现java调用c++

    在跨平台的软件开发中,有时我们需要...这个过程需要理解Java和C++之间的数据类型转换,以及如何在两种语言之间传递参数和返回值。熟练掌握JNI可以极大地扩展Java应用的功能,尤其是在需要高性能计算或利用硬件特性时。

    JAVA调用动态库(dll)的HelloWorld程序JNI技术

    JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。在本示例中,我们看到如何使用JNI...然而,当性能和低级别操作成为必要时,JNI提供了一种强大而灵活的解决方案。

    jni.zip_C++ JNI_JNI 调用java_c调用java_jni_jni jdk1

    这个过程涉及到了Java和C++的混合编程,需要对两种语言有深入的理解,并且熟悉JNI提供的接口。在实际应用中,开发者还需要考虑多线程、内存管理、错误处理等多个方面的问题,以确保代码的稳定性和效率。

    javadll访问!

    然而,Java提供了一种称为Java Native Interface (JNI) 的机制,允许Java代码与本地代码(如C/C++或Delphi编写的DLL)进行交互。下面我们将逐步解析这个过程: 1. **创建JNI接口**:在Java项目中,我们需要定义一个...

    Java调用DLL源代码

    Java调用DLL是Java开发中一个重要的技术主题,它允许Java程序与本地...这两种技术各有优缺点,选择哪种取决于项目需求和开发者的技术背景。理解并掌握这些技术,对于提升Java应用的跨平台性和功能扩展性具有重要意义。

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

    JNI是Java平台的一部分,它提供了一种方式让Java代码可以与本地(操作系统级别的)代码交互。通过JNI,开发者可以在Java程序中定义 native 方法,这些方法可以在对应的C/C++代码中实现。Java虚拟机(JVM)会加载动态...

    【cmake实战十】c++从动态库(dll)导出类

    通常有两种方法: - 使用`__declspec(dllexport)`和`__declspec(dllimport)`宏。在生成DLL的源文件中,你需要用`__declspec(dllexport)`来导出类;而在使用DLL的客户端代码中,使用`__declspec(dllimport)`来导入类...

    jni-native底层实现

    - 首先创建一个普通的Java项目,而不是Web项目,因为在工作空间中有两个文件夹目录,这有助于组织JNI相关的文件和目录结构。 ##### 2. 编译Java类 - 使用`javac`命令编译包含native方法的Java类。例如,在命令行中...

    tsclib (1)_hung36w_TSCLib.dll_

    这类工具可以帮助开发者调试和解决与DLL相关的错误,也可以用于检查`TSCLib.dll`的功能和依赖项。 接着,`x32`和`x64`两个目录可能分别包含适用于32位和64位操作系统的版本的`TSCLib.dll`。由于不同的系统架构对...

    java使用jawin调用dll文件

    JAWIN 是一个开源项目,它为Java提供了一种简单的方式来访问Windows API和DLL函数。它通过JNI(Java Native Interface)实现了这一目标,使得Java代码能够无缝地与C/C++编写的DLL函数进行通信。以下是一些关于使用...

    Eclipse下JNI演示Demo

    我们将涵盖两种情况:使用默认包和自定义包。 首先,我们需要安装CDT插件以支持C/C++项目。Eclipse可以通过"Help" > "Eclipse Marketplace"或"Install New Software"菜单找到并安装CDT。安装完成后,可以创建一个新...

    Java调用dll

    首先,JNI(Java Native Interface)是Java平台标准的一部分,它提供了一种机制,让Java代码可以调用本地(非Java)代码,包括C++编写的DLL。JNI头文件位于`C:\Program Files\Java\jdk1.6\include`目录下,包含了...

    eclipse 下实现java JNI 初探

    JNI为Java程序员提供了一种方式来编写可以调用本地(非Java)代码的Java方法。这些本地方法通常用C或C++编写,因为这两种语言对操作系统级别的访问更直接。JNI接口定义了如何在Java和本地代码之间传递参数、执行方法...

    java与Delphi写的dll交互

    Java和Delphi是两种不同的编程语言,它们各自拥有独特的特性和优势。在某些情况下,我们需要在Java应用程序中调用由Delphi编写的动态链接库(DLL)功能,以利用Delphi的强大性能或特定功能。本篇文章将深入探讨如何...

    JavaInvokeCS-master_JAVA调用C#dll_fightsk4_C#_

    在Java和C#这两种不同的编程语言之间进行通信,可以利用各自的优势,例如Java的跨平台性和C#的高效性能。 JNI是Java平台提供的一种原生接口,它允许Java代码和其他语言(如C、C#)写的代码进行交互。在Java中,JNI...

Global site tag (gtag.js) - Google Analytics