使用JNI调用VC的win32 Dynamic-Link Library dll,都可以.但是想通过java的对话框界面调试dll中的函数,不知道怎么调试.请大家多提供帮助.

解决方案 »

  1.   

    例子
    package com.dayang.util;/**
     * 这个类通过dll访问域用户的信息,从而知道这个用户是否经过 了认证
     * @author red
     * @version 1.0 2004-9-3
     */
    public class DomainUserAuthenticator {
    /**
     * 用户是否得到认证
     * @param userId 用户ID
     * @param password  用户密码
     * @return
     */
    public synchronized native boolean authenticate(String userId, String password); /**取到用户所属的组
     * @param userId 用户ID
     * @return 用逗号隔开的组的字符串
     */
    public synchronized native String getGroups(String userId); public synchronized native String getRealName(String userId); static {
    try {
    System.loadLibrary("DOMAIN_USER");
    } catch (UnsatisfiedLinkError e) {
    e.printStackTrace();
    } catch (SecurityException securityexception) {
    securityexception.printStackTrace();
    }
    } public static void main(String[] args) {
    DomainUserAuthenticator authenticator = new DomainUserAuthenticator();
    System.out.println( "return:" + authenticator.authenticate("ss","ss"));
    System.out.println( "return:" + authenticator.authenticate("sssdfdsdf","sfsafss"));
    String s = authenticator.getGroups("zuoxiaojun");
    System.out.println("s:" + s);
            String realname=authenticator.getRealName("red");
            System.out.println("realname:"+realname);
    }}
      

  2.   

    用javah生成一个c的头文件,然后实现这个cpp,做一个dll,上层应用象使用普通的java类那样用就可以了。
      

  3.   

    好像不行吧,java怎么能够调试 dll呢?最好还是从vc中启动调式该dll吧!
      

  4.   

    在VC里的DLL多加点调试信息吧..多用点try ...catch.......
      

  5.   

    我加了PACKAGE之后,虽然可以成功的生成DLL,也一封封装好了,但是在主程序中
    使用
    package martin;
    public class xxx{}
    //这个是生成头文件的那个java
    之后用VC编写了DLL文件。不知道这里如果使用了PACKAGE以后,对DLL的编写用不用改import martin.*
    class yyy{}
    //在这里调用的时候就出现问题了,说是无法调用martin.*里面的那个class。
    有知道的高手么?
    我的MSN是[email protected]
      

  6.   

    看你的Java编辑器是否支持remote调试, 如intellJ中就可以,在VC的project-->settting-->debug
    设置java运行java程序,并启动远程服务端调试模式, 即VC中dll以server的方式启动JVM, intellJ中为client, 使用socket attch的方式连接到这个JVM。VC:java -classpath %javaclasses% -Xdebug -Xnoagent -Djava.complier=NONE -Xrunjdwp=transport:dt_socket,server=y,suspend=y,address=5005 HelloWorld其中helloworld为java启动类, suspend=y, 启动JVM后处于挂起状态,否则她就直接运行Java程序了,这样可以等待client来连接到server JVM.IntellJ, Jbuilder:
    设置remote debug  
    debug mode = attach
    Host = localhost or target IP
    address=5005这样配置好以后,在VC中设置断点,从IntellJ中,启动debug就可以进行调试了。
      

  7.   

    不是很清楚,这里有些JNI的文章,楼主看看:http://www.graphics.net.cn/article/java/java_jni_vc6.asphttp://www.graphics.net.cn/article/java/java_jni_string.asphttp://www.graphics.net.cn/article/java/java_jni_skill.asphttp://www.graphics.net.cn/article/java/java_jni_skill_2.asphttp://www.graphics.net.cn/article/java/java_jni.asp