jni 中的 extern "C" 分析

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

先看一段jni自动生成的源代码:


/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class TestJni */
#ifndef _Included_TestJni
#define _Included_TestJni
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     TestJni
 * Method:    sayHello
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_TestJni_sayHello
  (JNIEnv *, jobject, jstring);
	//--kill-at
#ifdef __cplusplus
}
#endif
#endif



extern "C"

初次看有些陌生,首先我们先要明白 为何要使用extern"C",在c++中为了支持重载机制,在编译生成的代码中要对函数的名字进行处理,例如加入函数的返回类型等.而c中只是简单的函数名而已,不会加入其它东西.试想如果已经有一个c的函数库供我们c++调用,那么就会找不到函数,因为c++中我们的方法名称已经不再是原来的名字,因此我们需要使用extern"C"告诉编译器使用c的方式来连接他们.那么上面出现的结果就是

如果__cplusplus定义了结果为

extern "C" {
/*
 * Class:     TestJni
 * Method:    sayHello
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_TestJni_sayHello
  (JNIEnv *, jobject, jstring);
	//--kill-at
}
如果没有定义则

/*
 * Class:     TestJni
 * Method:    sayHello
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_TestJni_sayHello
  (JNIEnv *, jobject, jstring);



转载于:https://my.oschina.net/zorigin/blog/133935

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

jni 中的 extern "C" 分析 的相关文章

随机推荐

  • 共享组件(有码):将文件中数据导入到DataTable

    08 11 29日更新 xff0c 增加了Xls和Xlsx文件导入支持 1 功能 xff1a 1 1 自由配置文件格式 xff1a 生成的DataTable的主键 文件内容中是否有表头 列分隔符 列是否可空 列中数据类型 String型可加
  • Sql Server 2008修改Sa密码

    1 用Windows验证模式进入数据库管理器 右键根目录 属性 左边的安全性 选择sql server 和windows 验证 xff08 SQL Server and Windows Authentication Mode xff09 2
  • 基于GmSSL实现server服务端和client客户端之间SSL通信代码(升级优化公开版)

    参考链接 工程搭建介绍 Ubuntu安装GmSSL库适用于ubuntu18和ubuntu20版本 MY CUP OF TEA的博客 CSDN博客CLion运行程序时添加命令行参数 即设置argv输入参数 MY CUP OF TEA的博客 C
  • I Think I Need a Houseboat(1005)

    include lt iostream gt include lt cmath gt include lt vector gt using namespace std void main double area 61 50 double R
  • CMake使用技巧集

    CMake使用技巧集 txt 1 注意CMake不允许出现相同的目标名称 xff0c 即使是不同的目录下的CMakeLists txt 2 将头文件搜索路径插入到其它的前面 xff1a include directories BEFORE
  • 了解lpk.dll是什么病毒以及lpk.dll病毒专杀方法

    pk dll病毒是当下比较流行的一类病毒 xff0c 而正常系统本身也会存在lpk dll文件 xff0c 这足以说明这类病毒的危险性 系统本身的lpk dll文件位于C WINDOWSsystem32和C WINDOWSsystem32d
  • Cognos定时Email发送报表数据功能

    1 进入 IBM Cognos Configuration Data Access Notification 2 设置如下 xff08 注意一定要是smtp服务 xff0c 端口25 xff0c 我这里是用了腾讯邮箱的smtp服务 xff0
  • 在PC上运行安卓(Android)应用程序的几个方法

    三种方法 xff1a 1 在PC安装一个安卓模拟器 xff0c 在模拟器里面运行apk xff1b 2 虚拟机安装 Android x86 然后在此系统里运行 xff1b 3 利用谷歌chrome浏览器运行 xff08 这是一个新颖 有前途
  • 公司局域网搭建

    局域网 Local Area Network xff0c 简称LAN xff0c 用于将有限范围内 xff08 例如一个实验室 一层办公楼或者校园 xff09 的各种计算机 终端与外部设备互联成网 公司局域网怎么建立 xff1f 首先来了解
  • 异常-----freemarker.core.ParseException: Unexpected end of file reached

    freemarker自定义标签 假如你现在还在为自己的技术担忧 xff0c 假如你现在想提升自己的工资 xff0c 假如你想在职场上获得更多的话语权 xff0c 假如你想顺利的度过35岁这个魔咒 xff0c 假如你想体验BAT的工作环境 x
  • 40岁程序员真的要被淘汰了么?

    我承认起这个标题有些标题党 这几天华为公司被热议 xff0c 据非正式小道消息 华为开始 清理 34岁以上员工 据威腾网消息 xff08 http digi 163 com 17 0216 15 CDDINLRL0016686Q html
  • 探讨下为什么设置了Cache-Control:no-cache 服务器还是返回304 Not Modified ?

    前言 今天做项目的时候遇到一个问题 xff0c 就是在ie11中 新增一条新的消息后页面刷新后 xff0c 并没有看到新增的消息 xff0c 于是打开控制台发现 304 Not Modified 加时间戳没用 于是赶紧联系后台大佬能不能把c
  • maven 全局排除jar包

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 大多数java应用源码构建和依赖管理是使用maven来实现的 xff0c 我们的应用系统也都是基于maven构建的 xff0c maven虽然在依赖管理方面确实很便捷 xf
  • Engine实现国密算法SM3的代码和逻辑图

    OpenSSL add all algorithms ERR load crypto strings ENGINE load dynamic ENGINE init Engine finish free ENGINE by id ENGIN
  • 安装VMware,出现没有虚拟网络适配器的问题

    遇到错误 xff1a 安装VMware Workstation Pro这个软件 xff0c 网络适配器中没有虚拟网卡 xff0c 导致无法上网 解决方法 xff1a 遇到这个问题 xff0c 我就第一时间就去网上搜索解决方法 xff0c 方
  • RabbitMQ和Kafka面试

    RabbitMQ xff1a 采用AMQP高级消息队列协议的一种消息队列技术 最大的特点就是消费并不需要确保提供方存在 实现了服务之间的高度解耦 当master queue 所在节点宕机后 xff0c 其正在被消费的消息的相关信息全部丢失
  • windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境

    windows下用eclipse 43 goclipse插件 43 gdb搭建go语言开发调试环境 http rongmayisheng com post windows E4 B8 8B E7 94 A8eclipsegoclipse E
  • Linux性能监测:磁盘IO篇

    Linux性能监测 xff1a 磁盘IO篇 计算机最慢的子系统 xff0c 也是最容易出现性能瓶颈的地方 xff0c 因为磁盘离 CPU 距离最远而且 CPU 访问磁盘要涉及到机械操作 xff0c 比如转轴 寻轨等 访问硬盘和访问内存之间的
  • 多媒体指令(图像灰度化)

    权当练手了 xff0c 效果不好 xff0c cpu没有提供pmulluw这样一个无符号字相乘指令 处理的效果和matlab明显不同 xff0c 尤其是背景 xff0c 我实在找不出问题在哪里 xff0c 最可能就在寄存器符号上 灰度公式是
  • jni 中的 extern "C" 分析

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 先看一段jni自动生成的源代码 code DO NOT EDIT THIS FILE it is machine generated include lt jni h gt