我们团队目前开发的产品是用java语言编写的,大家都知道,java编写的代码随便都可以被反编译,导致别人可能会看到你“裸奔”的样子。所以,为了避免这种安全隐患,团队最终商定,将部分核心代码改用c语言编写,封装为dll,再由java调用。

于是乎,我们就开始jna初探。今天通过各种百度,终于做了个例子出来,在此做个记录,以备后路之需。

1、构造一个dll

由于本机的vs2015没有安装c++模块,所以采用Dev-C++开发,具体步骤如下:

1.1、新建项目,选择DLL,C项目

1.2、删除自动生成的代码文件,编写一个简单的函数

1.3、编译项目,生成dll

2、通过jna调用dll

2.1、在java项目中加入jna依赖

com.sun.jna

jna

3.0.9

2.2、编写调用类

public class DllTest {

public interface CLibrary extends Library {

CLibrary INSTANCE = (CLibrary) Native.loadLibrary("cDll2", CLibrary.class);

String hello();

}

public static void main(String[] args) {

String result = CLibrary.INSTANCE.hello();

System.out.println(result);

}

}

注意:dll可以使用绝对路径

到此,样例代码编写完成,一个简单的dll,一个简单的jna调用,欧了。

---------------------

作者:tobearc

来源:CSDN

原文:https://blog.csdn.net/tobearc/article/details/87215315

版权声明:本文为博主原创文章,转载请附上博文链接!

java调用c写的dll jna_jna调用c编写的dll相关推荐

  1. python调用自己写的函数_python调用自定义函数的实例操作

    在python中,想要调用自定义函数必须先声明,然后才能调用.使用函数时,只要按照函数定义的形式,向函数传递必需的参数,就可以调用函数完成相应的功能或者获得函数返回的处理结果. (1)声明函数 pyt ...

  2. java com dll_通过COM组件方式实现java调用C#写的DLL文件

    通过Java调用C#的DLL文件实现.网上资料很多,自己整合总结了一下,做个备忘. 一.C#写com组件 开发环境 VS2013 1.新建工程:TestDemo(类库项目)     //根据自己需要取 ...

  3. java 调用.net类库_通过COM组件方式实现java调用C#写的DLL文件

    通过Java调用C#的DLL文件实现.网上资料很多,自己整合总结了一下,做个备忘. 一.C#写com组件 开发环境 VS2013 1.新建工程:TestDemo(类库项目)     //根据自己需要取 ...

  4. 易语言如何调用c dll文件,易语言调用C++写的DLL

    直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误. 解决方案很简单,易语言声明DLL函数时"在库中对应命令名&q ...

  5. android调用 qt so文件路径,Android Java调用Qt写的so库

    有时候,我们反编译apk得到一个so库,如果直接使用这个so库的话,必须使用原来so库同样的package名字,才能用.这样人家反编译你的apk,就知道你侵犯了人家的版权.为了达到混淆的目的,我们可以 ...

  6. java Jacob调用VB编写的DLL(COM组件)

    项目上有调用Visual Basic 6.0编写的DLL文件的需求,在使用JNA调用无果后,在网上找了部分资料,整理如下. 为什么用JNA无法调用? VB生成的COM组件,虽然是dll后缀,但事实上, ...

  7. QT调用C#写的Dll

    QT调用C#写的Dll 参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数 ...

  8. 关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了

    关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了

  9. c++调用c#写的DLL

    c++调用c#写的DLL: 此文章演示了建立c#的dll: c++建立工程,引入dll: 不能解决的问题: 指定dll的路径,在代码里面直接写 #using "xxx.dll" 必 ...

最新文章

  1. jQuery日期和时间插件(jquery-ui-timepicker-addon.js)中文破解版使用
  2. 使用Hexo在Github搭建静态博客
  3. Python开发服务器巡检系统,东拼西凑用python脚本登录web管理页面做巡检(未实现)...
  4. Informatica PowerCenter使用介绍-转载
  5. 自适应滤波器_有源电力滤波器的使用意义和作用
  6. [蓝桥杯][算法训练VIP]旅行家的预算(单调栈+贪心)
  7. LeetCode 2140. 解决智力问题(动态规划)
  8. 程序员专属精品简历合集—面试必备
  9. python有什么用途视频_使用Python管理多平台视频流的最佳方法是什么?
  10. 免费json客户端解析
  11. jQuery.treetable使用及异步加载
  12. python实例属性与类属性_Python 面向对象编程:类的创建与初始化、实例属性与方法、类属性与方法...
  13. 用批处理启动常用服务
  14. S太赞了!大佬竟然用ELK搭建起了支撑TB级的日志监控系统...
  15. 云计算基础概念 笔记
  16. ImportError: cannot import name ‘abs‘
  17. 酵素果冻在快手火了!三个品牌单品一周卖出5000万背后的秘密是什么?
  18. 联想小新pro13关闭自动调节亮度
  19. android删除本地图片,Android中结合contentResolver.delete和file.delete实现本地图片的删除...
  20. matplotlib之pyplot模块之标题(title()和suptitle())

热门文章

  1. QT中关于窗口全屏显示与退出全屏的实现
  2. parameter与define 区别
  3. totorisgit与git两种方式pushpull文件
  4. mysql备份与还原-mysqldump备份、mysql与source还原
  5. mpvue小程序架构搭建详细介绍
  6. Emscripten教程之入门指导
  7. SSH(Struts2+Hibernate+Spring)开发策略
  8. maven 工程依赖war包
  9. python 中的[::-1]
  10. 如何从Windows远程上传文件到Linux(例如CentOS 7)