世界因你而精彩  
日历
<2006年9月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
统计
  • 随笔 - 169
  • 文章 - 1
  • 评论 - 138
  • 引用 - 0

导航

常用链接

留言簿(9)

随笔分类(163)

随笔档案(154)

文章档案(1)

新闻档案(1)

相册

收藏夹(1)

个人杂杂

友情链接

自学考试

资料搜索

最新随笔

搜索

  •  

积分与排名

  • 积分 - 358366
  • 排名 - 153

最新评论

阅读排行榜

评论排行榜

 
java调用.dll
编写java程序如:javacall.java
编译java程序,如将javacall.java放到c:\test下(都可以,没有固定) javac javacall.java
(当然你要设置环境变量:path
  设置:   
  我的电脑-属性-高级-环境变量中,有PATH(大小写都  
  可以)这个变量(没有就自己新建立一个)  
  变量名:PATH  
  变量值:javac等程序所在路径.  
  例如我的JDK安装在D:\JDK1.4中,那么我在D:\JDK1.4目录  
  下可以搜索一下javac,得到它的位置:D:\JDK1.4\jdk\bin,  
  现在变量值就可以写成  
  变量值:[   .;D:\JDK1.4\jdk\bin;   ]

或者先设置用户变量,系统变量再调用
在桌面上右键点击“我的电脑”

  然后属性->高级->环境变量 ->系统变量(用户变量也可以)->新建变量名里面输入JAVA_HOME;  

  变量值里面输入D:\JDK1.4\jdk\

  然后再新建一个CLASSPATH

  其值为:
      .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar (最前面的.;一定要写)  
)
生成头文件(javacall.h) javah -classpath "c:\test" javacall (记得要写上路径)
建立新DLL工程如:mycalldll(如放在:C:\Documents and Settings\Administrator\桌面\71info\)
将javacall.h复制到VC工程目录中(如:C:\Documents and Settings\Administrator\桌面\71info\mycalldll\mycalldll\),然后编译,如果编译说找不到jni.h文件,可以将jni.h复制到工程目录中,还可将javacall.h文件中的#include <jni.h>改为#include "jni.h",
将生成的.dll(如C:\Documents and Settings\Administrator\桌面\71info\mycalldll\mycalldll\Debug\mycalldll.dll)复制到C:\j2sdk1.4.2_05\bin则可在eclipse运行了

posted on 2006-07-03 14:09 张秀兰 阅读(6813) 评论(8)  编辑  收藏
评论:
  • # re: java调用.dll程序   Posted @ 2006-07-07 21:47
    你好!
    我最近遇到这样的问题,我开始在cmd下编译一个java文件用来调用vc的dll,做法按网上一般步骤做的,生成的dll后和其class,.h还有dll都在同一个目录下,然后我在cmd下运行成功,然后我把这个类修改了一下,就是不让此类中有main函数,然后在放到我的工程里,开发工具是eclipse,但运行总是报错,错误如下:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: SendDESCommand
    at testDdl.sendSignal.SendDESCommand(Native Method)
    at testDdl.MainTest.main(MainTest.java:21)
    不知道这是怎么回事,还请你给予指教,谢先。
    因为在cmd下运行的时候没有用包,在工程里这个java文件会有一个testDdl包,会不会是这个原因?
    有没有其它方法可以解决?谢谢了先。
    回复的时候希望你能回复到我的信箱:jwzhang0404@yahoo.com.cn  回复  更多评论   

  • # re: java调用.dll程序   Posted @ 2006-07-08 11:45
    能告诉我你的信箱么,我想通过邮件跟你联系,我的是jwzhang0404@yahoo.com  回复  更多评论   

  • # re: java调用.dll程序  张秀兰 Posted @ 2006-07-10 09:38
    你把你的程序贴出来,看下,行不?  回复  更多评论   

  • # re: java调用.dll程序  请教 Posted @ 2006-09-26 15:10
    你好,你这个方法是生成一个java可调用的dll吧!?!?能贴出代码看看你是怎么调用dll的吗?!
    谢谢  回复  更多评论   

  • # re: java调用.dll程序  张秀兰 Posted @ 2006-09-27 16:20
    不是的,是java调用一个如用delphi写的.dll.
      回复  更多评论   

  • # re: java调用.dll程序  张秀兰 Posted @ 2006-09-27 16:27
    // mycalldll.cpp : 定义 DLL 的初始化例程。
    //

    #include "stdafx.h"
    #include "mycalldll.h"

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif

    //
    // 注意!
    //
    // 如果此 DLL 动态链接到 MFC
    // DLL,从此 DLL 导出并
    // 调入 MFC 的任何函数在函数的最前面
    // 都必须添加 AFX_MANAGE_STATE 宏。
    //
    // 例如:
    //
    // extern "C" BOOL PASCAL EXPORT ExportedFunction()
    // {
    // AFX_MANAGE_STATE(AfxGetStaticModuleState());
    // // 此处为普通函数体
    // }
    //
    // 此宏先于任何 MFC 调用
    // 出现在每个函数中十分重要。这意味着
    // 它必须作为函数中的第一个语句
    // 出现,甚至先于所有对象变量声明,
    // 这是因为它们的构造函数可能生成 MFC
    // DLL 调用。
    //
    // 有关其他详细信息,
    // 请参阅 MFC 技术说明 33 和 58。
    //

    // CmycalldllApp

    BEGIN_MESSAGE_MAP(CmycalldllApp, CWinApp)
    END_MESSAGE_MAP()


    // CmycalldllApp 构造

    CmycalldllApp::CmycalldllApp()
    {
    // TODO: 在此处添加构造代码,
    // 将所有重要的初始化放置在 InitInstance 中
    }


    // 唯一的一个 CmycalldllApp 对象

    CmycalldllApp theApp;


    // CmycalldllApp 初始化

    BOOL CmycalldllApp::InitInstance()
    {
    CWinApp::InitInstance();

    return TRUE;
    }

    #include "javacall.h"
    JNIEXPORT jint JNICALL Java_javacall_shanfei (JNIEnv *, jclass, jint p)
    {
    int j = p*p;
    return j;
    }


    mycalldll.h

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include "jni.h"
    /* Header for class javacall */

    #ifndef _Included_javacall//java的head
    #define _Included_javacall
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
    * Class: javacall
    * Method: shanfei
    * Signature: (I)I
    */
    JNIEXPORT jint JNICALL Java_javacall_shanfei
    (JNIEnv *, jclass, jint);

    #ifdef __cplusplus
    }
    #endif
    #endif



    //java
    /**
    * @author zhangxl
    * 创建日期 2006-2-8
    */
    public class javacall
    {
    static
    {
    System.loadLibrary("Maxdll");
    }
    public native static String multiply(int i, int j, String st);
    public static void main(String[] args)
    {
    javacall jc = new javacall();
    int i = 4;
    int ii = 5;
    String stj;
    stj = jc.multiply(i, ii, "兰test");
    System.out.println(i+" the shanfei result is :"+stj);
    }
    }  回复  更多评论   

  • # re: java调用.dll程序  田克山 Posted @ 2007-06-25 00:44
    请问财客在线记帐软件好用吗?

    最近朋友向我推荐一款网上免费在线记帐软件——财客在线记帐网:www.coko365.com

    我也不知道是否好用
    但是朋友却觉得功能十分强大,安全性和稳定性比较高!不知道这里是否有人使用过呢?
    可以发表一下看法吗?  回复  更多评论   

  • # re: java调用.dll程序  张秀兰 Posted @ 2007-06-27 12:49
    财客在线记帐网:www.coko365.com 这个我没有用到.
    其实我较少使用就是了,只是偶尔有时间才会去用用.
    不过,这东西也不一定说功能有多强大就行,最主要是看他的安全性和您的实用性.
      回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 张秀兰 Powered by: 博客园 模板提供:沪江博客