ubuntu下c 调用java_ubuntu下使用JNI Java调用C++的例子
TestJNI.java
1 public classTestJNI {2
3 static{4 System.load("/home/buyizhiyou/workspace/JNI/src/libTestJNI.so");//注意此处加载.so文件5 }6 public nativeString test(String inp);//此处需要声明7
8 public static voidmain(String[] args){9 TestJNI j=newTestJNI();10 String ret=j.test("inputs");11 System.out.println(ret);12 }13 }
javah -jni TestJNI 生成TestJNI.h,这个文件不用自己改,如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class TestJNI */
#ifndef _Included_TestJNI
#define _Included_TestJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: TestJNI
* Method: test
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_TestJNI_test
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
然后用c++实现JNICALL Java_TestJNI_test方法,注意c++类型和JNI类型的转换:
#include "TestJNI.h"#include
using namespacestd;
JNIEXPORT jstring JNICALL Java_TestJNI_test(JNIEnv*env, jobject, jstring inp)
{char* s = (char*)env->GetStringUTFChars(inp, NULL);
cout<
jstring ret= env->NewStringUTF("return");returnret;
}
编译c++成.so文件,注意指定头文件路径,因为需要用到jni.h, jni_md.h:
g++ TestJNI.cpp -I/usr/lib/jvm/java-8-oracle/include/linux/ -I/usr/lib/jvm/java-8-oracle/include/ -fPIC -shared -o libTestJNI.so
然后javac TestJNI.java编译,java TestJNI执行即可。
ubuntu下c 调用java_ubuntu下使用JNI Java调用C++的例子相关推荐
- android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用
第一.通过eclipse新建一个工程名为HelloJni的android工程,并编译. 第二.右键工程-->Android Tools --> Add Native Support,出现如 ...
- perl java远程调用函数调用_如何从Java调用Perl?
Inline-Java是从Perl调用java的常用库,以及这个应该允许从Java调用Perl的post propose a org.perl.java模块. 但是,由于不同 JVM的JNI实现的不可 ...
- java 调用postgresql 函数_从Java调用PostgreSQL中的存储过程
我编写了一个我想用Java调用的存储过程.但我不认为它能够对我通过的查询做任何事情.以下是我的java代码: String QUERY_LOCATION = "select (license ...
- android java调用_关于Android中Java调用外部命令的三种方式
此所谓三种方式,只是个人认为.本人还是菜鸟初涉,所以有所错误,请指正. 个人认为,Java调用外部命令.无非三种情况: 一.是只执行命令,不考虑返回值. 二.是执行命令的同时,还需要得到返回值. 三. ...
- 麒麟系统java调用wps转pdf,急java调用WPS或pdfcreator的com接口实现doc转pdf解决方法
急急急java调用WPS或pdfcreator的com接口实现doc转pdf 各位大虾:我想把word文件生成PDF,然后网上找了方法http://hacker507.iteye.com/blog/1 ...
- android jni java调用c_Android与JNI(一) ---- Java调用C 静态调用
第一.通过eclipse新建一个工程名为HelloJni的android工程,并编译. 第二.右键工程-->Android Tools --> Add Native Support,出现如 ...
- java 调用 .net dll_c# – 如何从Java调用.NET dll
我有这个代码来创建一个简单的.NET .dll.它只返回一个int. 但是,它不适用于Java. using System; using System.Collections.Generic; usi ...
- java调用oracle的函数,从Java调用Oracle函数
我有以下功能规格: FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2, IN_parameter2 IN VA ...
- PHP调用kaldi,程序员罗杰-JAVA 调用PHP Webservices
PHP webservices 接口 import java.util.List; import javax.xml.namespace.QName; import javax.xml.rpc.enc ...
最新文章
- php acl控制,用PHP怎么实现一个ACL系统?
- JavaScript学习 九、事件
- java 99乘法表对齐_Java实现九九乘法表的完整实例(对齐版)
- matlab光学毕业论文,光学信息处理实验的Matlab仿真.doc
- 安徽工业大学计算机考研历年分数线,安徽工业大学历年考研分数线汇总[2012-2021]...
- 「1s」即可!用 VS Code 一键玩转 GitHub 代码!
- 查询数据表中重复记录
- ISO9000和CMM
- 银行卡号自动识别,包括银行名称、英文缩写代号、LOGO
- 【VB6】如何用纯VB代码写个五子棋程序?(一)
- Linux(CentOS)安装 Vim编辑器
- Chrome 管理搜索引擎
- 菜鸟晋级篇!一篇文章读懂看门狗定时器!
- int类型和String类型相互转换
- Linux格式化逻辑卷的命令,Linux LVM逻辑卷管理
- 【Paper】Neural Machine Translation by Jointly Learning to Align and Translate
- C++ 的算术、自增自减、位运算、关系与逻辑运算符(数据的操作)
- FTPC 在制品跟踪(WIP Tracking)对象
- 中兴服务器 bmc 登不上
- Linux多网卡多路由设置
热门文章
- 理解 static 关键字
- 机器学习基础(四)——持久化分类器
- Java 基础——日期(Date)的解析
- boost基础——variant的原理及基本用法
- Python机器学习——概念及其物理解释
- C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)
- python自动化办公入门-[Python] 自动化办公 docx操作Word基础代码
- 学python可以做什么-学会Python后都能做什么?介绍五种Python的实用场景
- python软件下载安装百度网盘-Python自动化测试视频教程【百度云盘下载】
- python发音1001python发音-1001种玩法 | Python 学习指南资源