jni call java_JNI:C++调用java之一

来自:http://blog.sina.com.cn/s/blog_60c069a40100hddq.html

编程人员有时会用到JNI,网上关于这方面的文章也很多,可是大多说的不够详细,或者就是转来转去,让我们这些菜鸟看了也自己弄不出来,不是找不到这个,就是找不到那个,今天闲来无事,自己做了一个例子,希望对菜鸟有些帮助,本例是C++调用java的静态方法,以后有时间再写一篇调用普通方法的,本例java文件是在netbeans下编写的,cpp文件是在VS2003下编写的。不再赘述,下面是步骤。

1.当然是要安装好JDK了,我用的是1.6的,就以1.6为例了。

2.设置环境变量,将“C:\Program Files\Java\jdk1.6.0_07\jre\bin\client;”和“C:\Program               Files\Java\jdk1.6.0_07\jre\bin\server”两项加入到path里。

3.新建java项目test,在项目test里新建个test的包,新建文件sample.java,其内容如下:

package  test;

public class Sample

{

public static int intMethod(int n)

{

return n*n;

}

public static boolean booleanMethod(boolean bool)

{

return !bool;

}

}

将其打成包test.jar。

4.新建C++项目main(Win32控制台项目),新建cpp文件main.cpp,其内容如下:

#include

#include

int main()

{

JavaVMOption options[1];

JNIEnv *env;

JavaVM *jvm;

JavaVMInitArgs vm_args;

int status;

jclass cls;

jmethodID mid;

jint square;

jboolean not;

options[0].optionString = "-Djava.class.path=./test.jar";

memset(&vm_args, 0, sizeof(vm_args));

vm_args.version = JNI_VERSION_1_2;

vm_args.nOptions = 1;

vm_args.options = options;

status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);

//如果创建虚拟机失败,则返回-1

if(status == JNI_ERR)

{

printf("Can not create JavaVM!\n");

return -1;

}

//寻找类

cls = env->FindClass("test/Sample");

if(cls == 0)

{

printf("Can not find class!\n");

return -1;

}

//获得静态方法ID

mid = env->GetStaticMethodID(cls, "intMethod", "(I)I");

if(mid !=0)

{

//调用静态方法

square = env->CallStaticIntMethod(cls, mid, 5);

printf("Result of intMethod: %d\n", square);

}

mid = env->GetStaticMethodID(cls, "booleanMethod", "(Z)Z");

if(mid !=0)

{

not = env->CallStaticBooleanMethod(cls, mid, 1);

printf("Result of booleanMethod: %d\n", not);

}

//销毁虚拟机

jvm->DestroyJavaVM();

return 0;

}

5.将test.jar复制到main项目里(debug外面)。

6.右键main项目属性,定位到C/C++的常规选项上,在附加包含目录中加入以下两项(依安装路径而定)

C:\Program Files\Java\jdk1.6.0_07\include

C:\Program Files\Java\jdk1.6.0_07\include\win32

如图1和图2:

f8e30f686e3dd2bd56d8a76b61051f13.png

b4fa0ef7584a9d555db779f1a3f904bd.png

7.将项目定位到链接器—常规项上,在附加库目录里加入C:\Program Files\Java\jdk1.6.0_07\lib,

如下图

45e018456d395b6ad2cc3d5034de922f.png

0676666b1d76e30787302a078343b6b3.png

8.将项目定位到链接器——输入项上,在附加依赖项里,加入jvm.lib,如下图

6858ec7990db8a4a333fc8576ac5b149.png

至此,虚拟机的配置就算完成了。运行main.cpp,如果你是按步骤来的,相信不会有问题的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值