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

JNI 在 VC++6.0 中如何调试 DLL

    博客分类:
  • JNI
阅读更多

编写 JNI 时,数据类型名字遵循 Java 的相关规则,如 jint,jchar,jboolean,jlong 等,DLL 代码和 Java 代码交换数据也有自己的一套方法,如 env->GetFieldID(),env->GetMethodID() 等,需要一些时间才能熟悉,初学总是难免犯一些低级错误,所以掌握正确的调试方法尤为重要。

 

本人采用的工具是:Eclipse、VC++6.0

 

步骤如下:

  • Eclipse 新建工程,编写 Java 代码
  • cmd 进入命令行模式,切换到工程目录的 bin 文件夹,javah -jni com.ldq.xxx 生成头文件 _com_ldq_xxx.h
  • VC++6.0 新建 DLL 工程,编写源文件 _com_ldq_xxx.cpp
  • 注意将 jni.h 文件和 jni_md.h 文件位置加入 Include 路径
  • DLL 无法自已运行,需要可执行的 exe 调用 DLL 才可以,VC++6.0 中的设置如下
    • 在左侧 workspace 中,右键点击建立的DLL工程,选 Settings ,选 Debug 选项卡,依次填入
      • Executable for debug session 填入 C:\Program Files\Java\jdk1.6.0_13\bin\java.exe
      • Working directory 填入 DLL工程路径\debug
      • Program arguments 填入 com.ldq.xxx
    • 将 Eclipse 工程路径下 bin 文件夹的类文件拷贝到 DLL工程路径\debug 下
    • 由于从 java.exe 启动,单步调试是汇编代码,所以要在调试的函数中设置断点,运行到断点处再单步调试
分享到:
评论

相关推荐

    java jni 传递汉字参数,包括 in out

    java jni 传递汉字参数,包括java传入dll 从dll传出到java 包括全部 java 代码 工程文件 全部vc++6.0 Dll 代码 工程文件 找了好久资料才完成的,传上来省的大家再走弯路。

    java jni 传递汉字参数,读写ini

    java jni 传递汉字参数,包括java传入dll 从dll传出到java 读写ini 包括全部 java 代码 工程文件 全部vc++6.0 Dll 代码 工程文件 找了好久资料才完成的,传上来省的大家再走弯路。

    JNI的学习资料

    4. **创建DLL**:在C或C++环境中(如VC++ 6.0),创建一个动态链接库(DLL)。这里,我们需要创建一个Win32 Dynamic-Link Library项目,并将`NativeHello.h`头文件及必要的JNI头文件(如`jni.h`)包含进来。然后,...

    JNI攻略之一――建立一个简单的JNI程序

    打开VC++6.0(或其他C++编译器),创建一个新的动态链接库(DLL)项目,命名为`hello`。项目创建后,需要添加必要的源文件和头文件。 2. **添加并编辑源文件** 在项目中添加`hello.cpp`文件,将通过`javah`命令...

    JNI我看过的最好的教程之一

    文档中提到的“解用VC++6.0实现JNI.doc”和“JNI实例教程.wps”可能包含了具体的步骤和示例,如如何在Visual C++ 6.0环境下编写和编译JNI代码,以及实际的案例分析。 通过这篇教程,开发者可以了解到如何结合Java...

    JAVA调用C++编写的DLL(C++和JAVA源码)

    2. **创建C++ DLL**:在VC++6.0环境下,你可以创建一个新的Win32 Dynamic-Link Library项目。定义你需要暴露给Java的函数,并遵循JNI的规范来编写函数签名。例如,一个简单的函数可能是: ```cpp #include "jni.h" ...

    C++与Java混合编程.docx

    这里使用的是Java 1.6.0_03-b05版本和VC++ 6.0作为C++编译器。需要确保系统环境变量配置正确,包括指向Java的include、lib目录,以及C++的相关路径。可以通过批处理文件设置这些环境变量,以便在命令行模式下编译和...

    c++调用java工程

    这通常涉及到环境变量的设置,确保包含Java的include和lib路径,以及特定于开发环境(如VC++ 6.0)的配置。此外,还需运行特定的批处理文件(如java-env.Bat),以准备必要的环境供C++调用Java。 接下来,通过Java...

    C++与Java混合编程

    - C++版本:VC++6.0 确保正确设置了环境变量,包括Java的include和lib路径。这些设置对于C++调用Java尤其重要。 #### 示例:Java调用C++ 1. **定义Java类**:在Java类中声明native方法并加载C++库。例如,在`...

    JAVA简历模版

    6. **开发工具**:在Java和C/C++开发中,熟练使用Eclipse、MyEclipse、SVN、VC++6.0、VS2010等工具。 7. **语言能力**:流利的普通话和粤语,英语四级,能进行专业文献的阅读和口语交流。 【工作经历】部分,求职者...

    mscomm控件用法.doc

    【MSComm 控件】是微软提供的一种用于串行通信的组件,主要应用于VC++、VB、Delphi等编程环境中。该控件使得开发者能够轻松处理串行端口(如COM1、COM2等)的数据传输,广泛应用于工业控制、设备通信等领域。在C#和...

    Visual C++ 编程资源大全(英文源码 其它)

    34.zip Doing Excel Automation witch MSVC 在VC中实现Excel自动化(9KB)<END><br>35,35.zip High Resolution Timing 高精度的时间处理(5KB)<END><br>36,36.zip Using Timers in MFC Applications ...

Global site tag (gtag.js) - Google Analytics