当前位置:  技术问答>java相关

jni调用dll问题

    来源: 互联网  发布时间:2015-04-17

    本文导语:  我现在需要在java中调用打印机驱动程序dll的一些方法 但是,jni调用的dll必须按照java class 生成的 .h文件的规定来写,这样好像无法在java 中直接调用驱动的dll 请问,如何实现在java中如何调用驱动程序的dll 谢谢 ...

我现在需要在java中调用打印机驱动程序dll的一些方法

但是,jni调用的dll必须按照java class 生成的 .h文件的规定来写,这样好像无法在java 中直接调用驱动的dll

请问,如何实现在java中如何调用驱动程序的dll

谢谢

|
public class testDll
{
    private native void Print_Proxy();
    static
{
try
{
System.loadLibrary("dllName");//你生成的dll的名字
}
catch(SecurityException e)
{
System.err.println("load failed");
}
}

      public void Print_Java(String[] version)
{
Print_Proxy();
}
}
javac testDll.java
javah -jni testDll
cl -I JAVA_HOMEinclude -I JAVA_HOMEincludewin32 -LD testDll.c -FedllName.dll

testDll.c
#include 
#include 
#include "softCertProxy.h"

typedef UINT (CALLBACK* PRINT_DLL)(char *);
JNIEXPORT jint JNICALL Java_testDll_Print_1Proxy
  (JNIEnv * jEnv, jobject this)
{
   HINSTANCE hDLL;
   PRINT_DLL Print_Dll;
   hDLL =LoadLibrary("Dll");//你要调用的dll
   Print_Dll =(PRINT_DLL)GetProcAddress(hDLL,"print");//调用dll里的方法名
    if (!Pring_Dll)
  {
// handle the error
FreeLibrary(hDLL); 
printf("dll link failedn");
return flag;
  }
  else
      {
          //处理函数,具体看api,jni.h
       }
}
我是假定你的dll里有print()方法。

|
如果看了
就知道很清楚了:
流程是这样:
1.首先的有.dll的.h文件既API说明
2.写java代码你的方法应是调用本地方法的如:
 ...
//包装本地方法的java方法
void foo()
{
     nativeFoo();
}
//声明本地方法的调用方法
native void nativeFoo();
 ...
3.编译上面的.java文件
会生成.class文件
4.用javah yourclasssname生成jni的头文件*.h
5.建立一个c/c++的工程(DLL)实现你的头文件的方法
6.编译后生成yourcppname.dll
7.把yourcppname.dll考到classpath路径下在2.步的你的.java类中加入
static
{
   System.out.loadLibrary("yourcppname");
}后重新编译
8.执行重新编译后的.class......OK!

    
 
 

您可能感兴趣的文章:

  • 请问如何用jni类来调用一个非java写的外部exe?谢谢!
  • jni的方法,用java调用c的代码,遇到的问题!
  • Linux 下JNI编程调用动态连接库的问题,十万火急
  • 有没有人做过JNI,我要在C++中调用java类方法,那个javai.dll在那里啊?(重分向谢!)
  • jni中调用了MFC,我该如何...?
  • Java使用JNI方法调用DLL问题
  • 为什么我的applet不能进行读操作,但是可以调用jni方法?谁能帮我解决一下,万分感谢!!!
  • LINUX下调用JNI找不到.so的路径
  • jni调用C程序dll产生的疑惑,300分寻找大虾
  • JNI:如何在C++中调用Java Method?
  • c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法
  • [高分求救啊]jni的C++实现中,调用iconv转UTF-8到GB18030老失败
  • 安卓应用开发通过java调用c++ jni的图文使用方法
  • java jni调用c函数实例分享(java调用c函数)
  • 基于jni调用时,jvm报错问题的深入分析
  • JNI的问题
  • WEB前端 iis7站长之家
  • jni的一个小问题--路径问题?
  • jni 问题 急急急 分数不够可以再加
  • solaris 上编译JNI库的问题
  • 我在Thinking in Java中遇到的Jni问题!
  • jni中汉字问题,如何把java中的汉字转化到c中去?
  • JNI中汉字问题。。。
  • 有关JNI的问题?
  • liunx jni编程问题!!!
  • JNI 中内存管理的问题
  • 【醒目】Unix下用jni调c++编译so库问题
  • 关于JNI的问题
  • linux下JNI给JAVA传递中文的问题
  • 问一个JNI的问题?
  • 最简单的JNI问题请教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在JNI编程中创建共享库时(.C->.DLL)(vc6.0环境…………多谢高手指教!
  • JNI可以调MFC写的DLL吗??
  • 如何在java中获取dll中的字符串或者字符数组(通过jni)?
  • 编译JNI.h报大量错
  • JNI++
  • javah -jni myclass???在线...
  • 难道没有人可以告我如何在applet中使用jni方法吗?
  • 听同事说JNI很烂! 很容易出错! 是真的吗? 来着有分!
  • 请问JNI是个什么东西?
  • jni难吗?谁有这方面的资料?
  • 哪儿有JNI的资料?
  • 100分求java +VC6.0使用JNI的最简单例子
  • JNI 助手类 NativeCall
  • JNI代码生成器 JNIGen
  • JNI编程工具 Janet
  • LevelDB JNI
  • 有请写过jni的朋友
  • 哪们有关于JNI的电子书或网上资料,能否给我一份
  • 一个巨迷糊的送分题(jni)
  • 关于JNI,保证给分,多谢,急用
  • Linux下的JNI封装 jniexec
  • 高手指点:不用JNI,如何在Java进程中新起一个JVM并在其中启动另一个Java进程。
  • 怎样在VC里调试JNI?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3