java调用c,封装成dll

本文介绍如何通过Java调用C++代码实现本地方法,包括创建Java类、编译、生成并实现本地方法的步骤。

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

1)首先要有一个HelloWorld.java。
这个是主文件,里面包括本地方法的java声明,一个main函数,还有一个静态代码段,用来导入所需要的动态连接库(在windows里是.dll)。
代码如下:
//HelloWorld.java
class HelloWorld {
    public native void displayHelloWorld();//注意关键字native,这就说明这个方法是用本地方法实现的。

    static {//静态代码段里面导入了hello.dll。
        System.loadLibrary("hello");
    }
    
    public static void main(String[] args) {//调用本类的displayHelloWorld方法,(当然了方法实际上是用c语言实现的)
        new HelloWorld().displayHelloWorld();
    }
}

2)编译HelloWorld.java。
使用语句为:、
javac HelloWorld.java

3)使用javah命令生成一个.h文件。

4)写一个.cpp文件实现native到处方法,气宗要包含第二部产生的.h文件(该.h文件中又包含了JDK带的jni.h文件);



java生成的.h文件

#include "jni.h"
#ifndef _Included_com_kunlun_useC_EncryptUseC
#define _Included_com_kunlun_useC_EncryptUseC
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_kunlun_useC_EncryptUseC
 * Method:    helloWorld
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_kunlun_useC_EncryptUseC_helloWorld
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

.cpp文件
#include "com_kunlun_useC_EncryptUseC.h"
#include "jni.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_com_kunlun_useC_EncryptUseC_helloWorld(JNIEnv *env, jclass)
{
 const char *str = "test sucessful!";
 return env->NewStringUTF(str);
}


5)在windows先装gcc,利用命令来生成动态链接库:g++ hello.cpp -shared -o 存放路径名\hello.dll -Wl,-kill -t -I"jdk安装路径\include" -I"jdk安装路径\include\win32"。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值