一,附加方式
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
相关推荐
它涉及到Spring Boot应用如何利用Java Native Interface (JNI) 和 Java Native Access (JNA) 这两种技术来调用操作系统级别的动态链接库(.so for Linux, .dll for Windows)。 **Spring Boot** Spring Boot是...
JNI将这两种优势结合起来,使得开发者能够充分利用不同语言的特点。 ### JNI 完全手册知识点: #### 1. JNI 定义与设计目的 JNI定义了Java和本地应用之间交互的接口,它允许Java代码调用本地应用程序接口(如C/C++...
总结来说,这个工程实例展示了如何结合使用JNI和DES加密来增强数据安全性,同时提供了学习和实践这两种技术的资源。通过深入研究和分析这个项目,开发者可以更好地理解JNI的工作原理,以及如何在Java中实现并应用...
在本示例中,"jniDemo.7z" 包含了使用JNI方式调用第三方DLL的测试项目。这个测试涉及到两个DLL文件,以及相关的Java源代码。 首先,我们有"JniTest.dll" 和 "JniDll.dll"。这两个动态链接库(DLL)文件在Windows...
7. **调试与测试**:由于涉及到跨语言编程,调试JNI代码可能比较复杂。可以使用NDK提供的工具如gdb进行原生代码调试,同时,确保在各种设备和Android版本上进行充分的测试,以保证兼容性和稳定性。 总之,"美图动态...
在跨平台的软件开发中,有时我们需要...这个过程需要理解Java和C++之间的数据类型转换,以及如何在两种语言之间传递参数和返回值。熟练掌握JNI可以极大地扩展Java应用的功能,尤其是在需要高性能计算或利用硬件特性时。
JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。在本示例中,我们看到如何使用JNI...然而,当性能和低级别操作成为必要时,JNI提供了一种强大而灵活的解决方案。
这个过程涉及到了Java和C++的混合编程,需要对两种语言有深入的理解,并且熟悉JNI提供的接口。在实际应用中,开发者还需要考虑多线程、内存管理、错误处理等多个方面的问题,以确保代码的稳定性和效率。
然而,Java提供了一种称为Java Native Interface (JNI) 的机制,允许Java代码与本地代码(如C/C++或Delphi编写的DLL)进行交互。下面我们将逐步解析这个过程: 1. **创建JNI接口**:在Java项目中,我们需要定义一个...
Java调用DLL是Java开发中一个重要的技术主题,它允许Java程序与本地...这两种技术各有优缺点,选择哪种取决于项目需求和开发者的技术背景。理解并掌握这些技术,对于提升Java应用的跨平台性和功能扩展性具有重要意义。
JNI是Java平台的一部分,它提供了一种方式让Java代码可以与本地(操作系统级别的)代码交互。通过JNI,开发者可以在Java程序中定义 native 方法,这些方法可以在对应的C/C++代码中实现。Java虚拟机(JVM)会加载动态...
通常有两种方法: - 使用`__declspec(dllexport)`和`__declspec(dllimport)`宏。在生成DLL的源文件中,你需要用`__declspec(dllexport)`来导出类;而在使用DLL的客户端代码中,使用`__declspec(dllimport)`来导入类...
- 首先创建一个普通的Java项目,而不是Web项目,因为在工作空间中有两个文件夹目录,这有助于组织JNI相关的文件和目录结构。 ##### 2. 编译Java类 - 使用`javac`命令编译包含native方法的Java类。例如,在命令行中...
这类工具可以帮助开发者调试和解决与DLL相关的错误,也可以用于检查`TSCLib.dll`的功能和依赖项。 接着,`x32`和`x64`两个目录可能分别包含适用于32位和64位操作系统的版本的`TSCLib.dll`。由于不同的系统架构对...
JAWIN 是一个开源项目,它为Java提供了一种简单的方式来访问Windows API和DLL函数。它通过JNI(Java Native Interface)实现了这一目标,使得Java代码能够无缝地与C/C++编写的DLL函数进行通信。以下是一些关于使用...
我们将涵盖两种情况:使用默认包和自定义包。 首先,我们需要安装CDT插件以支持C/C++项目。Eclipse可以通过"Help" > "Eclipse Marketplace"或"Install New Software"菜单找到并安装CDT。安装完成后,可以创建一个新...
首先,JNI(Java Native Interface)是Java平台标准的一部分,它提供了一种机制,让Java代码可以调用本地(非Java)代码,包括C++编写的DLL。JNI头文件位于`C:\Program Files\Java\jdk1.6\include`目录下,包含了...
JNI为Java程序员提供了一种方式来编写可以调用本地(非Java)代码的Java方法。这些本地方法通常用C或C++编写,因为这两种语言对操作系统级别的访问更直接。JNI接口定义了如何在Java和本地代码之间传递参数、执行方法...
Java和Delphi是两种不同的编程语言,它们各自拥有独特的特性和优势。在某些情况下,我们需要在Java应用程序中调用由Delphi编写的动态链接库(DLL)功能,以利用Delphi的强大性能或特定功能。本篇文章将深入探讨如何...
在Java和C#这两种不同的编程语言之间进行通信,可以利用各自的优势,例如Java的跨平台性和C#的高效性能。 JNI是Java平台提供的一种原生接口,它允许Java代码和其他语言(如C、C#)写的代码进行交互。在Java中,JNI...