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

Help!BCB中如何调用一个Java Class且得到其返回值?

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

    本文导语:  求助各位BCB和Java高手。因为和友军共同做一个项目,他们用Java,俺们用BCB(变态吧!)。如果完全是模块化面向对象,一点问题都没有,可是因为这个世界有人的存在,那就要扯皮,所以扯到现在,就要我们的BCB调用...

求助各位BCB和Java高手。因为和友军共同做一个项目,他们用Java,俺们用BCB(变态吧!)。如果完全是模块化面向对象,一点问题都没有,可是因为这个世界有人的存在,那就要扯皮,所以扯到现在,就要我们的BCB调用他们的一个Java  Class且得到其返回值。因为,我们在重写一个Class已经来不及了,而且......tmd,反正老板就是要我三天内搞定这个问题。
  各位大虾救命呀!!!!!!

|
发过去了(差点把这事给忘了)

|
我也不懂,但我在java 核心2中找到一些代码贴给你
/**
 * @version 1.10 1997-07-01
 * @author Cay Horstmann
    这是printf3.c文件
 */

#include "Printf3.h"
#include 
#include 
#include 

char* find_format(const char format[])
/**
 * @param format a string containing a printf format specifier
 * (such as "%8.2f"). Substrings "%%" are skipped.
 * @return a pointer to the format specifier (skipping the '%')
 * or NULL if there wasn't a unique format specifier
 */
{  char* p;
   char* q;

   p = strchr(format, '%');
   while (p != NULL && *(p + 1) == '%') /* skip %% */
      p = strchr(p + 2, '%');
   if (p == NULL) return NULL;
   /* now check that % is unique */
   p++;
   q = strchr(p, '%');
   while (q != NULL && *(q + 1) == '%') /* skip %% */
      q = strchr(q + 2, '%');
   if (q != NULL) return NULL; /* % not unique */
   q = p + strspn(p, " -0+#"); /* skip past flags */
   q += strspn(q, "0123456789"); /* skip past field width */
   if (*q == '.') { q++; q += strspn(q, "0123456789"); }
      /* skip past precision */
   if (strchr("eEfFgG", *q) == NULL) return NULL;
      /* not a floating point format */
   return p;
}

JNIEXPORT void JNICALL Java_Printf3_fprint
   (JNIEnv* env, jclass cl, jobject out, jstring format,
   jdouble x)
{  const char* cformat;
   char* fmt;
   jstring str;
   jclass class_PrintWriter;
   jmethodID id_print;

   cformat = (*env)->GetStringUTFChars(env, format, NULL);
   fmt = find_format(cformat);
   if (fmt == NULL)
      str = format;
   else
   {  char* cstr;
      int width = atoi(fmt);
      if (width == 0) width = DBL_DIG + 10;
      cstr = (char*)malloc(strlen(cformat) + width);
      sprintf(cstr, cformat, x);
      str = (*env)->NewStringUTF(env, cstr);
      free(cstr);
   }
   (*env)->ReleaseStringUTFChars(env, format, cformat);

   /* now call ps.print(str) */

   /* get the class */
   class_PrintWriter = (*env)->GetObjectClass(env, out);

   /* get the method ID */
   id_print = (*env)->GetMethodID(env, class_PrintWriter,
      "print", "(Ljava/lang/String;)V");

   /* call the method */
   (*env)->CallVoidMethod(env, out, id_print, str);
}

以下是printf3.h文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class Printf3 */

#ifndef _Included_Printf3
#define _Included_Printf3
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Printf3
 * Method:    fprint
 * Signature: (Ljava/io/PrintWriter;Ljava/lang/String;D)V
 */
JNIEXPORT void JNICALL Java_Printf3_fprint
  (JNIEnv *, jclass, jobject, jstring, jdouble);

#ifdef __cplusplus
}
#endif
#endif

以下是两个java文件
Print3.java
/**
 * @version 1.10 1997-07-01
 * @author Cay Horstmann
 */

import java.io.*;

class Printf3
{  public static native void fprint(PrintWriter out,
      String format, double x);
   static
   {  System.loadLibrary("Printf3");
   }
}

Print3Test.java
/**
 * @version 1.10 1997-07-01
 * @author Cay Horstmann
 */

import java.io.*;

class Printf3Test
{  public static void main(String[] args)
   {  double price = 44.95;
      double tax = 7.75;
      double amountDue = price * (1 + tax / 100);
      PrintWriter out = new PrintWriter(System.out);
      Printf3.fprint(out,
         "Amount due = %8.2fn", amountDue);
      out.flush();
   }
}




    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 【need help】驱动里读写“挂了“ (readl,writel不返回)
  • java命名空间java.awt.event类keyevent的类成员方法: vk_help定义及介绍
  • help!!!help!!!help!!!help!!!help!!!help!!!help!!!
  • Help!!!!!!!!Help!!!!!!!!Help!!!!!!!!
  • 高手帮忙--HELP!HELP!HELP!!!
  • 100————>help,help
  • HELP!!HELP!!!
  • help!help!……关于双系统的问题
  • help help
  • 系统安装问题!Help、Help !
  • help! help! RAMDisk的制作, 100分
  • help help busy!!! 请问如何让一个进程进入dead状态或者编程实现让一个进程进入dead状态
  • 用PQ后,grub不好用了,help,help,
  • help,如何在vmware下安装iso的liunx.9.0呀,help
  • help啊help....
  • 【help】关于linux和windows 2000 pro 双系统的问题【help】
  • help,anybody,nobody,help?能帮帮忙吗?有人明白吗?还是我发过帖子的那个问题:(
  • 有关inetd.conf和xinetd.conf的问题!!!(help,help!!!)
  • HELP!HELP!!w2k与linux用网卡直连,怎么连?快急死了
  • 大家看看:有点纳闷,为什么linux下的参数那么多重复的?那么多求助的方式?比如一会儿用--help一会儿又是-help一会儿又变成/?了
  • help help busy!!! 知道进程的ID号,在程序里如何检查这个进程还在不在?
  • SCO UNIX & WIN2K help!!!急急急help,高分(30)


  • 站内导航:


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

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

    浙ICP备11055608号-3