java调用.so文件

2023-10-31

//第一步,

public class JavaToCTest

{

private native void sayHello();//声明本地方法.

static

{

System.loadLibrary("JavaToCTest");//需要加载的so库文件的名称,在linux中会在上前缀"lib"+库文件的名称.

}

public static void main(String[] args)

{

new JavaToCTest().sayHello();

}

}

 

//第二步,在linux系统中使用如下方法生成头文件.

javah -jni  JavaToCTest         使用该方法生成的头文件如下. 生成的文件是: JavaToCTest.h


/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JavaToCTest */


#ifndef _Included_JavaToCTest
#define _Included_JavaToCTest
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     JavaToCTest
 * Method:    printlns
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_JavaToCTest_sayHello (JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif


//第三步,编写 c 代码, 该文件的名称为 JavaToCTest.c

内容如下:

#include <stdio.h>

#include <jni.h>

#include "JavaToCTest.h"


JNIEXPORT void JNICALL Java_JavaToCTest_sayHello(JNIEnv *env ,jobject obj)

{

printf("Java To C !!!!!   \n");

return;

}


//第四步:

编译生成库文件. 这个文件的文件名称为: libJavaToCTest.so

 gcc -I/usr/lib/jvm/java-6-openjdk/include/linux -I/usr/lib/jvm/java-6-openjdk/include/ -fPIC -shared -o  libJavaToCTest.so  JavaToCTest.c


//第五步:

运行java文件.

为了让java找到此so,运行:export LD_LIBRARY_PATH=.,将当前目录加入此环境变量。

java  JavaToCTest


如果看到 java To C 说明调用成功.














本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java调用.so文件 的相关文章

  • [问题记录]JNI的整型数组返回出现stack corruption

    问题记录 JNI的整型数组返回出现stack corruption 在项目中编写了一个返回整型数组的JNI代码 xff0c 但是在测试时发现问题 xff0c 会产生stack corruption错误 xff0c debug之后发现是ret
  • Android JNI/NDK C++代码读写手机上存放的文件

    Android JNI NDK C 43 43 代码读写手机上存放的文件 xff08 1 xff09 首先确保当前app已经获得读文件系统的权限 xff1a lt uses permission android name 61 34 and
  • 使用jni-rs实现Rust与Android代码互相调用

    本篇主要是介绍如何使用jni rs 有关jni rs内容基于版本0 20 0 xff0c 新版本写法有所不同 入门用法 在Rust库交叉编译以及在Android与iOS中使用中我简单说明了jni rs及demo代码 xff0c 现在接着补充
  • 一、JNI_OnLoad简介

    一 JNI OnLoad简介 Java JNI有两种方法 xff0c 一种是通过javah 获取一组带签名函数 xff0c 然后实现这些函数 这种方法很常用 xff0c 也是官方推荐的方法 还有一种就是JNI OnLoad方法 当Andro
  • java通过jni调用native method

    jdk中规定了native method xff0c 每一个native method背后对应有一个动态链接库来支持它 xff0c 在windows系统上 xff0c 就是dll后缀的文件 native method是需要通过c c 43
  • Java调用C++库dll文件接口(JNI)回传int参数(引用)

    vc写了一个标准的动态库 xff0c 有如下接口 xff1a const WCHAR execCommand const char param int amp errCode java中的接口声明 xff1a VideoUnit java
  • jni开发-GetMethodID与CallObjectMethod的坑

    在java层中声明一个方法用于创建一个audiotrack xff0c 在C层中调用这个方法并获取audiotrack对象 先看下面的代码 xff1a SuPlayer java public AudioTrack createAudioT
  • jni中使用extern "C"的原因

    首先 cplusplus这个宏是微软自定义宏 xff0c 大小是个整数 xff1a cplusplus This macro is defined when the C 43 43 compiler is in use You can us
  • Android JNI Java/C++互相调用

    一 xff0c Java 调用 C 1 xff0c 首先我们创建一个文件名字叫做 xff0c JNI 其实你不创建也行 看自己 public class JNI 加载本地C语言文件库 库名字为你写的C语言文件名 static System
  • NDK开发(一)————如何在Android Studio下进行NDK开发

    在AS中进行NDK开发之前 我们先来简单的介绍几个大家都容易搞懵的概念 1 到底什么是JNI 什么是NDK 2 何为 交叉编译 先看什么是JNI JNI的全称就是Java Native Interface 即java本地开发接口 可能大家和
  • Android logcat解析与问题分析

    logcat是Android中一个命令行工具 可以用于得到程序的log信息 一 logcat 结构 1 这个结构在AS或者exlipse上面看的更清楚 二 logcat中地址反差backtrace 当程序崩溃的时候会在loacat中打印出b
  • Android调用OpenCV配置方法

    文章目录 1 环境 2 准备工作 3 开始构建示例项目 4 集成opencv库 4 1 导入opencv库 4 2 配置CMakeLists txt 4 3 代码声明及实现 4 3 运行效果 5 可能遇到的其他错误及解决方法 5 1 包冲突
  • android开发使用 ndk-stack 打印崩溃日志

    使用 ndk stack 的时候需要你的 lib 编译为 debug 版 通常需要下面的修改 1 修改 android mk 增加 为 LOCAL CFLAGS 增加 g 选项 2 修改 application mk 增加 APP OPTI
  • Android.mk 语法详解

    Android mk 语法详解 转 http blog sina com cn s blog 602f8770010148ce html 0 Android mk简介 Android mk文件用来告知NDK Build 系统关于Source
  • Android嵌入式开发之NDK初级入门 粘贴可用阅读可懂

    前言 NDK开发 其实是为了项目需要调用底层的一些C C 的一些东西 另外就是为了效率更加高些 如果你在Eclipse ADT下开发过NDK就能体会到要么是配置NDK还要下载Cygwin 配置Cygwin 然后需要编译生成 相当的蛋疼 要么
  • Android JNI开发从0到1,java调C,C调Java,保姆级教程详解

    前些天发现了一个蛮有意思的人工智能学习网站 8个字形容一下 通俗易懂 风趣幽默 感觉非常有意思 忍不住分享一下给大家 点击跳转到教程 第一步首先配置Android studio的NDK开发环境 首先在Android studio中下载NDK
  • Android解决调用JNI报java.lang.UnsatisfiedLinkError: No implementation found for的错误

    最近公司项目需求接入即时通讯功能 现在第三方的即时通讯做的比较完善 接入也很方便 最近在调试语音的时候遇到了一个 so库加载失败的问题 在网上查看都是说由于原有项目的so库和新添加的model的so库数量不一致 具体报错如下 java la
  • 如何在Java项目中定义并调用自己编写的native方法?

    如何在Java项目中定义并调用C C 编写的native方法 开发工具 编写测试的java代码 编写C 代码 将dll文件链接到java项目中 总结 开发工具 IntelliJ IDEA 2020 用来编写java代码 Visual Stu
  • C语言基础入门详解二

    前些天发现了一个蛮有意思的人工智能学习网站 8个字形容一下 通俗易懂 风趣幽默 感觉非常有意思 忍不住分享一下给大家 点击跳转到教程 一 C语言多级指针入门 include
  • 导致java.lang.UnsatisfiedLinkError错误的一种解决办法

    欢迎转载请注明出处http blog csdn net ning gg article details 53641254 在程序中加入so文件导致java lang UnsatisfiedLinkError错误的一种解决办法 可能这个解决办

随机推荐

  • Caffe源码中math_functions文件分析

    Caffe源码 caffe version 09868ac date 2015 08 15 中有一些重要文件 这里介绍下math functions文件 1 include文件 1
  • 将单链表记录的数据写入到文本文件中

    C语言单链表详解 附加强练习 mc10141222的博客 CSDN博客 继上一个讲单链表的文章 我们只需要在那个基础上再加一点代码便能将所记录的学生数据写入到我们所要写入的文本文件中 这涉及到文件的读写 因此练习一下这个也能顺便帮我们更好地
  • SpringCloud基本原理及应用(一)

    1 springcloud简介 主要提供了微服务开发所需的配置管理 服务发现 断路器 智能路由 微代理 控制总线 全局锁 决策竞选 分布式会话和集群状态管理等组件 可以跟spring boot框架一起使用 会让你开发微服务架构的云服务非常好
  • C语言算法基础——二叉树的实现

    文章目录 前言 一 实现二叉树的基本思想 二 二叉树的代码 1 二叉树的结构体 2 二叉树的初始化 3 二叉树的创建 4 前中后序遍历 5 求树的深度 6 二叉树的翻转 7 主函数测试 8 结果展示 总结 前言 1 二叉树 Binary t
  • Maven篇:搭建私有仓库之Nexus

    环境准备 linux版本 CentOS Linux release 7 9 1804 JDK版本 jdk 8u191 linux i586 Maven版本 apache maven 3 6 3 Nexus版本 nexus 3 53 0 01
  • java四种权限修饰符

    访问权限修饰符 public 意为公开的 访问权限最高 可以跨包访问 protect 意为受保护的 权限次之 可以在同包和子 父类中访问 default 意为默认的 一般不写 权限次之 可以在同包中访问 private 意为私有的 权限最低
  • 自动化测试优势&劣势

    目录 一 自动化测试概述 二 自动化测试优势 劣势 优势 劣势 三 自动化测试常用工具 代码级别 接口 协议级别 界面级别 一 自动化测试概述 软件自动化测试是相对手工测试而存在的 由测试人员根据测试用例中描述的规程一步步执行测试 得到实际
  • 创建chrome右键菜单划词搜索扩展

    转载请注明出处 http blog csdn net zhymax article details 8552830 上网时经常在多个搜索引擎间切换 但使用chrome自带的搜索引擎切换比较麻烦 换一个引擎就需要设置一次配置 因此也在chro
  • Working routine【Codeforces 706 E】【二维链表】

    Codeforces Round 367 Div 2 E 可以说是一道模拟题了 写了有些时候 可能是太菜了吧 题意 给出一个原始矩阵 之后有Q次操作 我们将两个矩阵交换位置 题目中保证两个矩阵不相交 给出的是两个矩阵的左上方的端点 以及它们
  • 机器学习sklearn-特征工程

    数据挖掘的5大流程 1 获取数据 2 数据预处理 3 特征工程 将原始数据转换为更能代表预测模型的潜在问题的特征的过程 可以通过挑选最相关的特征 提取特征以及创建特征来是想 4建模 测试模型并预测结果 5 上线模型 特征工程 sklearn
  • Qt也有垃圾回收(通过QScopedPointer实现),下决心在项目里使用QScopedPointer,省了太多事情了,而且更安全!!...

    也谈Qt的垃圾回收 前几天在做代码审核的时候 Kai Uwe Broulik建议使用QScopedPointer来替代手工内存管理 使用后发觉确实节约了不少代码量 我的CHERRY可以延长寿命了 但是通过简单地阅读代码 发现和Python等
  • Ubuntu18.04 ROS Melodic的cv_bridge指向问题(四种方式,包括opencv4)

    备注 2023 7 4修改 如果是ros空间 可以在工作空间中使用单独cv bridge的方式 比较简单 是我目前常用的方式 放在文章最后 由于ROS Melodic自带的是Opencv3 2 0 而我自己下载的是opencv3 4 5 所
  • AndroidFFmpeg

    https github com appunite AndroidFFmpeg git 本地路径 这个比较全 四种播放方式都有 问题流媒体播放无控制 太快太慢都报错 lbg android ffmpeg AndroidFFmpeg http
  • 机器学习葡萄酒质量_通过数据和机器学习制作出更好的啤酒和葡萄酒

    机器学习葡萄酒质量 带GPS的狗 电子鼻和可倾倒完美啤酒的机器人 GPS Wearing Dogs an Electronic Nose and a Robot That Pours the Perfect Beer Bushfires i
  • Hal库自动生成Freertos时出现osSemaphoreCreate和osSemaphoreWait报错

    由于freertos和Hal版本问题 生成的函数会生成老版本的 所以不兼容 需要改掉 将osSemaphoreCreate osSemaphore SEM 1 改成 osSemaphoreNew 1 1 osSemaphore SEM in
  • TimeGAN学习记录

    一 学习TimeGAN主要参考的链接如下 1 知乎上的TimeGAN论文研读 2 csdn上的一篇博客 论文阅读 Time Series Generative Adversrial Networks TimeGAN 时间序列GAN 3 时间
  • 使用神经网络对黄金期货交割价格进行预测-4 MATLAB

    上一篇文章讲述了如何对预测的结果进行合理化修正 本文主要讲述的是对神经网络本身的学习算法进行优化 一般优化神经网络有三种模式 一种为优化神经网络的连接结构 一种为优化神经网络的学习算法 一种为既优化连接结构 又优化学习算法 由于笔者的知识水
  • JetBrains下载历史版本

    https www jetbrains com clion download other html 在上方的链接中将clion改为idea phpstrom webstrom等等 转载于 https www cnblogs com yang
  • WuThreat身份安全云-TVD每日漏洞情报-2023-10-08

    漏洞名称 Glibc ld so本地权限提升漏洞 漏洞级别 高危 漏洞编号 CVE 2023 4911 相关涉及 系统 ubuntu 22 04 glibc Up to excluding 2 35 0ubuntu3 4 漏洞状态 POC
  • java调用.so文件

    第一步 public class JavaToCTest private native void sayHello 声明本地方法 static System loadLibrary JavaToCTest 需要加载的so库文件的名称 在li