首页
登录 | 注册

JNI知识(三)Java调用C++/C函数之Java参数类型是String

前面提到JNI主要是可以完成Java调用C++/C函数,C++/C也可以调用Java方法。先看Java调用C++/C函数。

下面先看java接口参数是String类型(入参)

example:

Java interface  

      public void setName(String name);

 JNI file:

JNIEXPORT void JNICALL Java_setName_ 1native (JNIEnv *env, jclass thiz, jstring name)

 {      

                const char* str;

                jboolean isCopye = false;

            /* 把传进来的jstring类型转为utf-8类型,JNI中只识 别编码方式是UTF-8的 */

              str = env->GetStringUTFChars(name, &isCopye);

       …….

   /* 注意使用完了最好让JVM释放转换成UTF-8的  string的对象的空间,如果不显示的调用的话,JVM中会一直保存 该对象,不会被垃圾回收器回收,有可能就会导致内存溢出。 */

env->ReleaseStringUTFChars(name, str);


}

相关文章

  • 简单学习MongoDB及Java调用
    摘要 MongoDB及Java调用MongoDB MongoDB及Java调用 目录[-]MongoDB一些概念 MongoDB的CRUD Java调用MongoDB 关于Java驱动包的一个疑问 MongoDB一些概念 下面以MongoD ...
  • Java 调用 C# DLL
    Java无法直接调用C# dll,需要通过经过桥接的方式,进行中继转发一下请求.查阅大量资料,做了大量实验,不停的调试.排错之后,期间试过jni4net,不过这个插件需要修改原有的C# DLL内容,还会生成一些额外的Java代码,jni4n ...
  • 最近在做一个项目,是在debian的linux环境下用java开发的,因为系统没有安装图形界面,于是采用调用浏览器显示特定网页来实现的方案.       现在可以找到的java调用linux浏览器的方法主要有3种,       第一种是调用 ...
  • 下面将举出JAVA对ORACLE数据库存储过程的调用           ConnUtils连接工具类:用来获取连接.释放资源 package com.ljq.test; import java.sql.Connection; import ...
  • Java基础10:全面解读Java异常
    这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Ja ...
  • Java基础15:深入剖析Java枚举类
    这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Ja ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.014 s.
京ICP备10005923号