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

300分求教解决方案(即将加分)

    来源: 互联网  发布时间:2015-02-12

    本文导语:  1,用java通过jni调用一段C++库 2,把C++库做成corba再调用他 问题:哪个方案性能好,实现快, 能否提供经验 | 方案一:性能好,实现快,但维护。 方案二:扩展性好。 你要很快实现,选用一。 要作的好...

1,用java通过jni调用一段C++库
2,把C++库做成corba再调用他
问题:哪个方案性能好,实现快,
能否提供经验

|
方案一:性能好,实现快,但维护。
方案二:扩展性好。

你要很快实现,选用一。
要作的好,选二。

|
Java如何调用C/C++(JNI)  

1. program Java source file loading Native method
//
//
// NativeDemo
// Author: huang_jc 
// file name: NativeDemo.java
public class NativeDemo 
{  
         int i;
    int j;
    public static void main(String args[])
    {
             NativeDemo ob = new NativeDemo();
           ob.i = 10;
            ob.j = ob.test();
            System.out.println("this is ob.i:"+ob.i+"n");
            System.out.println("this is ob.j:"+ob.j);
    } 
    public native int test();
    static 
    {
     System.loadLibrary("NativeDemo");    
    }
}

2.Compile file NativeDemo.java 
Javac NativeDemo.java

3.Use javah.exe to produce file NativeDemo.c and NativeDemo.h
   a : javah NativeDemo to produce NativeDemo.h which is:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class NativeDemo */

#ifndef _Included_NativeDemo
#define _Included_NativeDemo

#pragma pack(4)

typedef struct ClassNativeDemo {
long i;
long j;
} ClassNativeDemo;
HandleTo(NativeDemo);

#pragma pack()

#ifdef __cplusplus
extern "C" {
#endif
extern long NativeDemo_test(struct HNativeDemo *);
#ifdef __cplusplus
}
#endif
#endif
b : use javah -stubs NativeDemo to produce NativeDemo.c which seems as:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include 

/* Stubs for class NativeDemo */
/* SYMBOL: "NativeDemo/test()I", Java_NativeDemo_test_stub */
__declspec(dllexport) stack_item *Java_NativeDemo_test_stub(stack_item *_P_,struct execenv *_EE_) {
    extern long NativeDemo_test(void *);
    _P_[0].i = NativeDemo_test(_P_[0].p);
    return _P_ + 1;
}
4. Write your own implimentation of method test()
//file name test.c
#include 
#include "nativedemo.h"
#include 

long NativeDemo_test(HNativeDemo *this)
{
    printf("hello:!n");
    printf("this is in the native method!n");
    return (unhand(this)->i)*2;
}

5. link NativeDemo.c and test.c to produce NativeDemo.dll
Use VC++5.0 tools :Cl.exe 
Cl /GD NativeDemo.c test.c /LD
then we get NativeDemo.dll


NativeDemo.c
test.c
Generating Code...

/out:NativeDemo.dll
/dll
/implib:NativeDemo.lib
NativeDemo.obj
test.obj
Creating library NativeDemo.lib and object NativeDemo.ex
Press any key to continue 




6.Run 

java NativeDemo

we get the such result:

D:vj11usernative>java NativeDemo
hello:!
this is in the native method!
this is ob.i:10

this is ob.j:20

D:vj11usernative> 


NOTE:
          Do not forget this: 
c:> set INCLUDE=d:javainclude;d:javawin32;%INCLUDE%
C:>set LIB =d:javalib;%LIB%
where d:java is the directory of your jdk

new version jdk1.2.1 :

With new jdk1.2.1 :

1.javac NativeDemo.java

2. javah NativeDemo to produce head file (You need not to javah -stubs NativeDemo to produce NativeDemo.c file),

You don't need the c file. Just the NativeDemo.h is sufficient!

3.Use VC++ produce a window dll project and add the NativeDemo.h to it.

then implement the function. All is OK!
NOTE: the data type conversion between java and c++.See jni.h for more information.
 

|
那就得用corba了。
具体怎么实现光靠几个例子是不够的。
以前我买到过一本将C++编corba的书,但不知现在还有吗。

|
用CORBA还要配服务器,如果只是用到少量的函数,就用JNI吧
挺方便的。

|
up

|
jni实现相对简单

|
还好。

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












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • .net/c#/asp.net iis7站长之家
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


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

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

    浙ICP备11055608号-3