java 基础篇 Jni c++

本文详细介绍了如何使用Java通过JNI接口调用C++编写的DLL库,实现跨语言功能交互。从环境搭建到代码编写,再到最终的运行效果展示,提供了完整的步骤指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 可以反调c++ ldll库进行java语言无法实现的功能

1 准备intellij IDEA(elcipse), JDK, VS2008

2 编写java

package Jni;

public class Jni_Demo {

    static{
        //调用动态链接库
        System.loadLibrary("JniDemo");
    }

    //定义一个本地方法
    public native String sayHello(String name);

    public static void main(String[] args) {

        Jni_Demo jniDemo = new Jni_Demo();
        String message = jniDemo.sayHello("zhangsan");
        System.out.println(message);

    }
}

2 生成c++头文件

进入out 目录:

打包名+ 类名

目录结构

Jni/Jni/Jni_Demo.java 

E:\java\Jni\out\production\Jni>javah -jni Jni.Jni_Demo

 

3 拷贝头文件到vs工程

C:\Program Files\Java\jdk1.8.0_171\include\jni.h

C:\Program Files\Java\jdk1.8.0_171\include\win32\jni_md.h

注意:将生成的头文件#include 《jni.h》 改成 "jni.h"

 

 

#include "jni.h"
#include "Jni_Jni_Demo.h"
#include <string>
 
JNIEXPORT jstring JNICALL Java_Jni_Jni_1Demo_sayHello
  (JNIEnv * env, jobject, jstring name)	
{
   printf("Hi,World!");
   const char*  pname = env->GetStringUTFChars(name,false);
	std::string dname = pname;
   std::string Welcome="Welcome" + dname ;
   return  env->NewStringUTF(Welcome.c_str());
}

生成dll动态库,拷贝到指定目录,将该目录加入到环境变量  path中,java IDE启动就会加载该目录(也可以Load方法加载绝对路径) 

5 效果;

 

注意事项: jdk(elcipse/IntelliJ idea) 和 visual 编译的的版本必须一直(都是x86 或者都是x64) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值