JNI调用
2015-09-14 00:08
323 查看
http://blog.csdn.net/xdonx/article/details/8450427
http://blog.chinaunix.net/uid-10275706-id-3241480.html
1.新建文件夹test.
2.在test文件夹中放置文件HelloWorld.java:
package test;
public class HelloWorld {
public static void main(String[] args) {
System.loadLibrary("HelloWorld");
printHello();
}
public static native final void printHello();
}
3.编译HelloWorld.java:
javac test/HelloWorld.java
4.在test文件夹中放置文件HelloWorld.cpp:
5.编译HelloWorld.cpp:
g++ test/HelloWorld.cpp -fPIC -shared -o test/libHelloWorld.so -I /usr/lib/jvm/java-7-openjdk-i386/include/
6.设置环境变量:
export LD_LIBRARY_PATH=./test
7.目录结构:
./test:
HelloWorld.class HelloWorld.cpp HelloWorld.java libHelloWorld.so
8.运行:
java test.HelloWorld
helloworld
http://blog.chinaunix.net/uid-10275706-id-3241480.html
1.新建文件夹test.
2.在test文件夹中放置文件HelloWorld.java:
package test;
public class HelloWorld {
public static void main(String[] args) {
System.loadLibrary("HelloWorld");
printHello();
}
public static native final void printHello();
}
3.编译HelloWorld.java:
javac test/HelloWorld.java
4.在test文件夹中放置文件HelloWorld.cpp:
#include <iostream> #include <jni.h> using namespace std; static int android_print(JNIEnv * env, jclass clazz) { cout<<"helloworld"<<endl; } static JNINativeMethod gMethods[] = { {"printHello", "()V", (void*)android_print}, }; jint JNI_OnLoad(JavaVM* vm, void* reserved) { JNIEnv* env = NULL; if (vm->GetEnv((void**) &env, JNI_VERSION_1_6) != JNI_OK) return -1; jclass clazz = (env)->FindClass("test/HelloWorld"); if((env)->RegisterNatives(clazz, gMethods, 1)< 0) return -1; return JNI_VERSION_1_6; }
5.编译HelloWorld.cpp:
g++ test/HelloWorld.cpp -fPIC -shared -o test/libHelloWorld.so -I /usr/lib/jvm/java-7-openjdk-i386/include/
6.设置环境变量:
export LD_LIBRARY_PATH=./test
7.目录结构:
./test:
HelloWorld.class HelloWorld.cpp HelloWorld.java libHelloWorld.so
8.运行:
java test.HelloWorld
helloworld
相关文章推荐
- spark 最新版1.0本地模式安装_spark入门学习一
- Lintcode搜索区间
- php服务器版本更新工具up2server
- Unity3D笔记第十三天——关节、布料
- 网络操作系统和分布式操作系统的区别
- Linux中批量删除redis中的key
- [知其然不知其所以然-5] 为什么我的风扇温度很低却转不停/或者温度很高却根本不转?
- 深入浅出:进程、线程、协程、同步、异步、回调(转载)
- Google Hacking
- pptpd免radius限速、限连接+自由定制功能脚本
- Spring资源
- java线程系列---Runnable和Thread的区别
- javascript数组操作
- Spark的Rpct模块的学习
- 我在hp的第一次JavaWeb总结
- CentOS6.4下Mysql数据库的安装与配置
- laravel blog 二
- 关于DLL的导出.def文件
- codecombat安息之云山峰41关代码分享
- 校招笔试复习——指针数组与数组指针