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

求救!关于JNI

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

    本文导语:  Java的类这样: public class HelloWorld {   public native void displayHelloWorld();   static {       System.loadLibrary("test");   }   public static void main(String[] args) {     HelloWorld helloWorld1 = new HelloWorld();     helloWorld1.disp...

Java的类这样:
public class HelloWorld {
  public native void displayHelloWorld();
  static {
      System.loadLibrary("test");
  }
  public static void main(String[] args) {
    HelloWorld helloWorld1 = new HelloWorld();
    helloWorld1.displayHelloWorld();
  }
}

用VC6生成的test.dll放在系统目录下。
HelloWorld helloWorld1 = new HelloWorld();可以顺利执行过去,说明test.dll已经被load,可是当执行helloWorld1.displayHelloWorld();的时候报错:
java.lang.UnsatisfiedLinkError: displayHelloWorld
at testjni.HelloWorld.displayHelloWorld(Native Method)
at testjni.HelloWorld.main(HelloWorld.java:21)
Exception in thread "main"

我使用Jbuilder5。
谢谢!!!!!!!!!

|
有两个地方要注意:
1. 方法的导出,在VC(你是使用vc开发dll吗)工程中的*.def文件中加入
你的方法导出。
像我的是这样的:
; NativeCode.def : Declares the module parameters for the DLL.

LIBRARY      "NativeCode"
DESCRIPTION  'NativeCode Windows Dynamic Link Library'

EXPORTS
    ; Explicit exports can go here

Java_edp_storageagent_StorageManager_initialize                @1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2 如果你的dll使支持mfc的,请在每个java native function中加入一段

JNIEXPORT void JNICALL Java_edp_storageagent_StorageManager_initialize
  (JNIEnv *env, jclass o,jint maxThreadNum)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    your code;
}

如果还是不行,请将你的dll拷贝到和你的class同一个目录,再运行

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












  • 相关文章推荐
  • 求救!求救!紧急求救!为什么更新不了所指定的内容?
  • 求救!!!硬件高请进、、、、、、(十万火急,高分求救。)
  • 求救求救!!
  • 求救啊 高分求救 UNIX下关于进程通讯的问题~
  • 求救!!!求救!!!机器不能正常启动
  • 编程技术其它 iis7站长之家
  • 紧急求救,root用户无权限删除文件
  • 晕,特晕...求救...
  • 高分求救~~如何取得linux下进程完整命令行字符串,就是的ps -ef 完整的全路径的CMD那一列,求救!!!!附现在的代码
  • 求救!weblogic6.0后台运行正确,前台页面跳转或调用其他页面时出“页面无法显示错误”
  • 求救:java里如何取整一个浮点数(不做四舍五入)
  • 紧急求救!!
  • Linux下无法启动apache 高分求救!在线等待
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题 (分不够可加)
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题
  • 求救,linux和windows之间如何联成局域网(设置),并且相互之间移动文件。
  • 求救!!在Redhat7.3下安装scim0.9.3怎么安装?
  • Linux8.0 修改字符集后,再次进系统,无图形界面问题。。。求救。。
  • SUSE网络打印机问题,在线等,求救!!
  • 散分一百,紧急求救!ROOT密码忘记


  • 站内导航:


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

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

    浙ICP备11055608号-3