Jni——java调用C++

本文学习自http://chnic.iteye.com/blog/198745


Java端:

1.新建java工程HelloWorld

2.右击src新建class

包名:com.chnic.jni

类名:SayHellotoCPP

3.贴上如下代码

package com.chnic.jni;

public class SayHelloToCpp {

public native void sayHello(String name);  

    public static void main(String args[]){

    SayHelloToCpp shp = new SayHelloToCpp();  

        shp.sayHello("ZCC");  

      }

}


4.进入工程目录下,打开CMD调用javah -jni com.chnic.jni.SayHellotoCPP

如果找不到javah这个命令,可以将jdkbin设为环境变量

运行结束后会在当前目录下生成com_chnic_jni_SayHellotoCPP.h

 

C++端:

1.打开VS——新建Win32项目——选择DLL,空项目——完成Win32Project1

2.com_chnic_jni_SayHellotoCPP.h移入工程

3.建立com_chnic_jni_SayHellotoCPP.cpp

4.贴上如下代码

#include <iostream>  

#include "com_chnic_jni_SayHellotoCPP.h"  

using namespace std;

 

JNIEXPORT void JNICALL Java_com_chnic_jni_SayHellotoCPP_sayHello   

(JNIEnv* env, jobject obj, jstring name)  

{  

const char* pname = env->GetStringUTFChars(name, NULL);  

cout << "Hello, " << pname << endl;  

} 


5.属性——C/C++——附加包含目录——添加%java_home%\include;

6.将%JAVA_HOME%\include\win32下的jni_md.h放入工程路径

7.F7编译后可在Debug目录下发现Win32Project1.dll

 

Java调用C++

1.将Debug放到环境变量path

2.修改java代码如下

package com.chnic.jni;

static{  

        System.loadLibrary("Win32Project1");  

    }

public class SayHelloToCpp {

public native void sayHello(String name);  

    public static void main(String args[]){

    SayHelloToCpp shp = new SayHelloToCpp();  

        shp.sayHello("ZCC");  

      }

}


 

3.运行代码

即可看到Console输出HelloZCC

etc.如果出现Can't load IA 32-bit .dll on a AMD 64-bit platform这个错误,回到vs,将Win32改为X64即可,修改方法参照http://blog.sina.com.cn/s/blog_6e0693f70100t6ip.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值