public class HelloWorld {
static {
System.loadLibrary("Hello");
}
public native void DisplayHello();
public static void main(String[] args) {
new HelloWorld().DisplayHello();
}
}
javac HelloWorld.java
javah -jni HelloWorld
生成helloworld.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: DisplayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_DisplayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
根据.h生成的
方法名写个cpp文件
HelloWorld.cpp
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_DisplayHello
(JNIEnv *env, jobject obj)
{
printf("From jni_helloworldImpl.cpp :");
printf("Hello world ! \n");
return;
}
g++ -shared -I /usr/local/jdk/include/ -I /usr/local/jdk/include/linux/ -Wall -fPIC HelloWorld.cpp -o libHello.so
java -Djava.library.path=. HelloWorld
注意一下要引入/usr/local/jdk/include/ 和/usr/local/jdk/include/linux/
还要加-Wall -fPIC
分享到:
相关推荐
NULL 博文链接:https://sunwenran.iteye.com/blog/933347
基于JNI的绑定,没有依赖关系。 阅读官方和 ,了解如何与Dear ImGui一起使用。 C ++中的几乎所有内容都可以以相同的方式在Java中完成。 绑定使用库具有OpenGL渲染器和GLFW后端实现。 可以在模块中找到。 建议使用...
简介一些Java程序使用反射通过动态加载和执行类来隐藏其代码。 您可以从内存中转储它们,但是如果它们在执行后立即被卸载怎么办? 您可以编辑rt.jar并将钩子放在各种反射方法上。 但是,如果程序直接使用本机类加载...
调用第三方so库文件,利用JNI封装个so文件调用第三方的so文件的函数
键存在于符号表中,并隐藏字符表该方案已被弃用,请 ,请参阅下一个 从复杂的函数中获取密钥,以隐藏密钥,当前函数是一个简单的解决方案。 (复杂的解决方案:将Key分成几部分,将它们存储在不同的C文件中,最后...
这个java接口算是预览版吧,java与ctp api通信用的是Bridj,基于jni,现在还有不少的bridj的代码暴露在调用环节中,以后会慢慢隐藏掉。 选Bridj的原因是比jni省事,比jna效率要快,而且跨平台,理论上把ctp的dll换成...
1.创建AppRuntime对象,并调用它的start函数 2.调用startVm创建Java虚拟机 3.调用startReg函数来注册JNI函数 4.调用Zy
JNI / NDK 建立 设置GRADLE_ENV_API_KEY的API密钥: $ export GRADLE_ENV_API_KEY= $( echo " api-key-for-gradle-file-from-env " | openssl dgst -binary -sha256 | openssl enc -base64 ) $ echo $GRADLE_ENV_...
使用假链接程序与Xposed结合使用,提供Java和Native双向屏蔽数据检测,还提供其他文件重定向,JNI Monitor,文件访问控制,并提供给其他软件以在过程中动态添加或修改配置。 Changlog Changelog项目说明使用假链接器...
编译后的class文件对Java逆向工程工具完全隐藏。使用MYJ2C不需要任何Java JNI或C代码的知识。MYJ2C支持所有Java语言特性,可以在现有的代码库中使用。 编译前 public class App { public static void main(String ...
跨平台高效纯Java绑定,Kotlin被用作代码生成工具。 这种绑定是裸露的,它直接反映了imgui的API。 我认为这已经足够好了,但是您可能会期望其他样式。 有一个jimgui的声明性包装,即可用。特征可以兼顾优点和缺点。...
我在安卓系统和应用程序开发中收集一些技巧和隐藏功能的游乐场包括: 活页夹调用系统或其他应用程序来归档一些不寻常的目标 启动和恢复以保持应用程序活着 全双工工控机 jni fork 监控应用程序卸载或其他事件 材料...
隐藏朋克图书馆 HidPunk 提供对人机接口设备 (HID) 的直接访问。 这使 Java 开发人员能够为各种 HID(包括鼠标、键盘和游戏杆)创建自定义接口和用户空间驱动程序,而无需编写编译代码。 目前,HidPunk API 的唯一...
使用程序与Xposed结合使用,提供Java和Native双向屏蔽数据检测,还提供其他文件重定向, JNI Monitor,文件访问控制,并提供给其他软件以在过程中动态添加或修改配置。 使用说明 该软件仅用于安全性研究和研究,以...
实例135 隐藏Java控制台 502 实例136 监控内存 505 实例137 获取本机的Mac地址 508 实例138 获取Java系统信息 509 实例139 控制Java与C++程序的通信 510 实例140 访问Windows注册表 514 第13章 Java配置与集成 523 ...
1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与...
1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 ...
1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与...
1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与...