易截截图软件、单文件、免安装、纯绿色、仅160KB

语言混编之c调用java

经过验证可以实现,先将实现代码贴出,以备以后使用。
本文默认你的java开发环境已经安装成功,并且对于java语言和c++语言有过了解。
编写测试用类:Demo.java
代码如下:
public class Demo
{
 public static int COUNT = 8;
 
 private String msg;
 private int[] counts;
 
 public Demo ()
 {
  this ("default constructor");
 }
 public Demo (String msg)
 {
  this.msg = msg;
  this.counts = null;
 }
 public String getMessage ()
 {
  return msg;
 }
 
 public static String getHelloWorld ()
 {
  return "hello world!";
 }
 public String append (String str, int i)
 {
  return str + i;
 }
 public int[] getCounts ()
 {
  return counts;
 }
 public void setCounts (int[] counts)
 {
  this.counts = counts;
 }
 public void throwExcp () throws IllegalAccessException
 {
  throw new IllegalAccessException ("exception occurs");
 }
}
由于在java中能够使用函数重载,所以在c语言中调用java是需要确定究竟是调用的是那个函数。在jdk中提供了javap程序。
Javap将一个类和它的方法的一些转储信息输出到标准输出。该工具不把代码反编译为java源代码,但是它会把字节代码反汇编成为由Java虚拟机规范定义的字节代码指令。其用法如下:
-l     输出本地变量表
-public    输出公用类名和方法名
-protected   输出类的受保护方法
-private   输出类的似有方法
-verbose  输出类的栈的信息和本地方法的个数
回到原来主题:
javap -s -p Demo
无法上传图片^_^想象一下吧。在输出中找到如下的语句:
public java.lang.String append(java.lang.String, int);
  Signature: (Ljava/lang/String;I)Ljava/lang/String;
在vs2008中新建一个工程(win32 console application),配置工程属性:将jdk中include目录下的头文件加入到工程中,并将该文夹下的win32子目录下的header file同样加入到工程中。
新建main.cpp
代码如下:
#include


相关文档:

学习C与Java的类比

大学的时候选修过一个学期日语,当时日语老师对我们说:“对于中国人来讲,学习英语一般是哭着进去,笑着出来;学习日语则是笑着进去,哭着出来”。意思就是说学习英语的时候,入门的时候比较困难,但是只要坚持学下去,转变了汉语的思维习惯时,最近可以把英语学得很好。而日语不同,一方面因为其与汉语的紧密关 ......

经典C/C++面试题(三)

1) 什么是预编译,何时需要预编译:总是使用不经常改动的大型代码体。
程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
2) char * const p;
  char const * p
  const char *p ......

经典C/C++面试题(三)2

32)
  int main()
  {
   int x=3;
   printf("%d",x);
   return 1;
  }
  问函数既然不会被其它函数调用,为什么要返回1?
  mian中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息
33) 要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100 ......

Pro*C SQLDA 结构体

--摘自 《Oracle Pro*C 程序开发》     --Create/Modify Email:xingchengli@gmail.com
SQLDA 的结构如下:
struct SQLDA
{
long N; /* Descriptor size in number of entries */
char **V; Ptr to Arr of addresses of main variables */
long *L; /* Ptr to Arr of lengths of buffe ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号