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

两个Java文件在一个JVM中,可否访问同一个动态链接库?

    来源: 互联网  发布时间:2017-03-13

    本文导语:  两个Java文件在一个JVM中,可否访问同一个动态链接库 | 给你写了个例子: 这个是a.java class a {     static     {         try         {             System.loadLibrary("a");        ...

两个Java文件在一个JVM中,可否访问同一个动态链接库

|
给你写了个例子:

这个是a.java
class a
{
    static
    {
        try
        {
            System.loadLibrary("a");
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
    public static void main(String args[])
    {
        a m = new a();
        System.out.println(m.s(123));
        b o = new b();
        System.out.println(o.ss(567));
    }
    native public int s(int a);
}

这个是b.java

class b
{
  native public int ss(int a);
}

这个是a.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class a */

#ifndef _Included_a
#define _Included_a
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     a
 * Method:    s
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_a_s
  (JNIEnv *, jobject, jint);

#ifdef __cplusplus
}
#endif
#endif

这个是b.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class b */

#ifndef _Included_b
#define _Included_b
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     b
 * Method:    ss
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_b_ss
  (JNIEnv *, jobject, jint);

#ifdef __cplusplus
}
#endif
#endif

这个是我修改后的 a.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class a */

#ifndef _Included_a
#define _Included_a
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     a
 * Method:    s
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_a_s
  (JNIEnv *, jobject, jint);
  
JNIEXPORT jint JNICALL Java_b_ss
  (JNIEnv *, jobject, jint);

#ifdef __cplusplus
}
#endif
#endif

这个是a.cpp

#include "a.h"


JNIEXPORT jint JNICALL Java_a_s
  (JNIEnv *, jobject, jint)
{
    return 999;
}
  
  
  
JNIEXPORT jint JNICALL Java_b_ss
  (JNIEnv *, jobject, jint)
{
    return 888;
}

用这个命令编译:

cl -ID:jdk1.4include -ID:jdk1.4includewin32 -LD a.cpp  -Fea.dll

运行java a

就可以看到效果了。

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












  • 相关文章推荐
  • C++ MultiMaps 成员 swap():交换两个multimaps
  • 急!有两个char buf[]里面是两个日期(2004-08-02),怎样判断两个日期之间的天数?(只能用标准C)
  • C++ Lists(链表) 成员 merge():合并两个list
  • 一个Statement不能同时打开两个ResultSet?为了同时打开两个,可以考虑建立两个Statement?甚至两个Connection?
  • C++ Lists(链表) 成员 swap():交换两个list
  • Keepalived 能配两个虚拟ip吗,匹配两个数据库实例?
  • C++ Maps 成员 swap():交换两个map
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • C++ Vectors 成员 swap():交换两个Vector
  • 两个域名,两个端口,一个服务器……
  • C++ Lists(链表) 成员 splice():合并两个list
  • 你们看是不是可以这样理解:在用来进行两个对象的比较时,==操作符用来比较两个对象的引用地址,而equals()用来比较两个对象的值。
  • C++ Strings(字符串) 成员 swap():交换两个字符串的内容
  • 下载了jbuilder5,是rar格式的,解开后有两个文件,一个是rsc-jb5.bin,一个是rsc-jb5.cue,据说这两个文件是刻光盘的,请问谁知道怎么刻?不会用这两个文件直接安装吧?谢谢!
  • C++ Strings(字符串) 成员 compare():比较两个字符串
  • 基础问题,刚学的!请教,两个日期格式变量,我要求两个日期之间的天数,怎么求?
  • cocos2d中CCSpriteFrameCache文件同时存在两个plist的问题解决
  • 主进程有两个线程,fork子进程后复制主进程两个线程的内存么?
  • 我机器上安装了linux和win2000两个系统,请问如何在两个系统之间切换。
  • linux字符模式下怎样可以运行两个任务(开两个终端)
  • 听说,初学JAVA有两个开源程序是必看的,请问是哪两个。在那里下载?


  • 站内导航:


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

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

    浙ICP备11055608号-3