JNI JAVA 调取C++dll文件(64位/32位)动态库测试demo教程

首先准备环境:

  1. 系统环境:win10 64x系统
  2. 开发环境:JDK1.8以上
  3. 开发工具:java [Eclipse]  C++[VS2012]

参考网上资料:

https://www.cnblogs.com/cuglkb/p/5665882.html (如有不妥,请告知)

代码demo部分:

 

 创建一个名为JavaCJniTest的java项目,并创建一个test包;

 创建一个java类HelloDll.java文件,代码如下:

 

  1. Java代码部分:

package test;

public class HelloDll {
    
    public native void print(String str); // 打印输出

    public static void main(String[] args) {
        
        // 加载dll文件
        System.load("E:\\smarwork\\JavaCJniTest\\t1.dll"); 
        // 这里可以填写绝对路径,也可以用system.loadLibrary("");这种方法,需要将dll文件放到项目根目录下即可
        
        HelloDll helloDll = new HelloDll();
        
        helloDll.print("喔噻,这是一个测试居然出来了ㄟ(▔,▔)ㄏ ");
    }

}

根据创建的HelloDll类,再根据javah命令在命令窗口创建h头文件,命令如下:

E:\smarwork\JavaCJniTest\src>javah -classpath E:\smarwork\JavaCJniTest\src -jni test.HelloDll

快速进入该文件夹的方式进入该文件,进入src处,选中文件夹再按住shift键,右击选择在此处打开命令窗口,如下图:

s

如图为命令在命令行生成.h头文件成功后的效果

a

到src目录下查看生成的.h头文件

w

生成的test_HelloDll.h文件代码如下,具体不解释了:

aa

然后再根据上述命令生成h文件,根据h文件就可以进入下一步C++的代码项目的创建了。

 

 打开VS创建一个名为HelloDll的Win32的项目,选择dll完成;

然后把test_HelloDll.h头文件拷贝到项目中,如图:

1

根据拷贝好的把头文件引入,头文件-右击添加-现有选择拷贝好的文件即可;

导入jni依赖,项目右击属性-配置属性-C/C++-附加包含目录,依次选择jdk下include目录、win32目录、bridge,然后点击确定,应用在确定即可如图:

222

然后编写HelloDll.cpp文件代码,代码如下:

 

  1. C++代码部分:

// HelloDll.cpp : 定义 DLL 应用程序的导出函数。

#include<iostream>
#include"test_HelloDll.h"

/*
* Class: test_HelloDll
* Method: print
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_test_HelloDll_print(JNIEnv * env, jobject obj, jstring str){
const char *msg;
msg = env->GetStringUTFChars(str,0);
std::cout<<"the msg is"<<std::endl;
std::cout<<msg<<std::endl;
env->ReleaseStringUTFChars(str,msg);
}

注意x64位系统需要修改成x64进行生成,项目-》属性-》平台选择配置管理器-》选择平台新建-》然后选择x64,如图:

333

根据编写好的点击生成,把生成好的dll文件拷贝到项目根目录下,如图:

5555

  1. 根据上述完成步骤进行代码测试,如图:

6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值