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

100分相送JNI高手

    来源: 互联网  发布时间:2015-08-21

    本文导语:  源文件如下: 运行后出错 public class Sample1 {   public Sample1() {   }   static{       System.loadLibrary("Sample1");   }   public static void main(String[] args){     Sample1 test = new Sample1();     test.getPort();     Syste...

源文件如下:
运行后出错

public class Sample1 {

  public Sample1() {
  }

  static{
      System.loadLibrary("Sample1");
  }

  public static void main(String[] args){

    Sample1 test = new Sample1();
    test.getPort();
    System.out.println("over");

  }

  public native void getPort();
}

dll 是通过c++builder生成的。运行后出错。

错误如下:

java.lang.UnsatisfiedLinkError: getPort

at co.thumb.prj.mynative.Sample1.getPort(Native Method)

at co.thumb.prj.mynative.Sample1.main(Sample1.java:24)

Exception in thread "main" 

请jni高手不吝赐教。

|
只能使用JNI来实现,给一个我写的小例子,仅供参考:
这是一个打印hello world的例子,打印由c的printf来完成

package mytest;

public class HelloNative
{
          //将要调用的打印方法声明为native,且直接加分号即可
 public native static void greeting();
 static
{
                   //这个dll是有打印函数的c编译成的
                   //系统在程序开始是导入它,这样才能成功
 System.loadLibrary("newPrintfDll");
}
}

//主方法类
package mytest;

import mytest.*;

public class HelloNativeTest
{
public static void main(String[] args)
{
HelloNative.greeting();
}
}

成功!
注意:首先,你要将HelloNative编译成class文件,然后使用javah编译该class文件,生成.h文件(要注意路径,如果有包,要退到包名上一级来编译.h文件,否则即使dll调用成功,也会显示找不到greeting方法)
将该.h文件中的关键代码粘帖到cpp文件中(有vc向导生成一个dll的文件模版),关键代码:
JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting
  (JNIEnv* env, jclass cl)//稍做了修改
{
      printf("asdfasdf");
}
编译成dll文件,放到如c:winntsystem32下,你的.h文件也要放到相应目录(在编译dll时放到vc98include下,还有jni.h和jni_md.h也要找到它们放入),这样就基本完成了,具体细节我无法讲得太仔细建议去看参考资料.谢谢.

|
留下email,我发一个给你。

|
talisman@kali.com.cn也发个给我看看吧

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编译JNI.h报大量错
  • JNI的问题
  • JNI++
  • 关于JNI的中文问题(急急急急急)
  • jni 问题 急急急 分数不够可以再加
  • jni的方法,用java调用c的代码,遇到的问题!
  • javah -jni myclass???在线...
  • 请问如何用jni类来调用一个非java写的外部exe?谢谢!
  • 难道没有人可以告我如何在applet中使用jni方法吗?
  • 听同事说JNI很烂! 很容易出错! 是真的吗? 来着有分!
  • jni的一个小问题--路径问题?
  • 请问JNI是个什么东西?
  • jni难吗?谁有这方面的资料?
  • 哪儿有JNI的资料?
  • solaris 上编译JNI库的问题
  • JNI 助手类 NativeCall
  • JNI代码生成器 JNIGen
  • JNI编程工具 Janet
  • LevelDB JNI
  • 我在Thinking in Java中遇到的Jni问题!


  • 站内导航:


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

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

    浙ICP备11055608号-3