java调用动态链接库_Java调用本地代码(一)—— 创建动态链接库

近期项目需要使用Java调用本地一个很老的C写的库,就顺便研究了下Java调用本地代码的一些方法。整理一下出一个小系列。主要就是介绍两种不同的方法:JNI和JNA。作为第一篇,我们先动手用C写个简单的动态链接库,为后面的文章做准备。什么是动态链接库先做个基础的普及。C/C++编译出来的库有两种:静态链接库和动态链接库。静态库后缀名在Windows上是.lib,Unix/Linux上是.a。当你的程...
摘要由CSDN通过智能技术生成

近期项目需要使用Java调用本地一个很老的C写的库,就顺便研究了下Java调用本地代码的一些方法。整理一下出一个小系列。主要就是介绍两种不同的方法:JNI和JNA。作为第一篇,我们先动手用C写个简单的动态链接库,为后面的文章做准备。

什么是动态链接库

先做个基础的普及。C/C++编译出来的库有两种:静态链接库和动态链接库。

静态库后缀名在Windows上是.lib,Unix/Linux上是.a。当你的程序在编译时引用静态库,编译器会将整个静态库都包含在你编译后的可执行文件中,所以可执行文件会很大,但是程序执行时就不再需要静态库了。

动态库后缀名在Windows上是.dll,一般存放在C:\Windows\System32下;Unix/Linux上是.so,一般存放在/lib或/usr/lib下。程序编译时,编译器不会将动态库包含在生成的可执行文件中,所以引用动态库的可执行文件较小,程序会在运行过程中动态加载所需要的库。对于Java程序员就可以将它简单的想象成.jar文件。在Unix/Linux上,动态链接库一般都命名为”libxxx.so”,其中”xxx”是库名。

创建动态链接库

这里我们使用Linux环境,用C语言创建一个动态链接库”libhello.so”,库里面就提供一个hello()函数。根据输入的字符串,在屏幕上打印相应的欢迎信息。

编写头文件”hello.h”,声明hello()函数

#ifndef _HELLO_H_

#define _HELLO_H_

/* C++需加上extern "C" 声明 */

#ifdef __cplusplus

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值