Java Invoke C and C++ Using JNI
2012-11-09 12:45
411 查看
The Java side
1.建立Java工程JavaHello,编写java类
// Hello.class ,这里主要包名,因为后面的函数命名同包名也有联系的。package test;
class Hello
2.用命令生成头文件
在bin目录下建立批处理文件,名称随意,用bat作为扩展名就行了。这里命名为run.bat内容为:
set java_home=F:\dev-software\dev-soft\jdk\jdk1.5.0
set path=%java_home%\bin
set class_path=%java_home%\lib;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar
javah -jni test.Hello
@pause
#include <jni.h>
#ifndef _Included_test_Hello
#define _Included_test_Hello
#ifdef __cplusplus
#endif
#endif
The C side-Compiling the Library
1.建立标准C工程Cpro,并生成dll文件
1) 将生成的头文件test_Hello.h拷贝到C工程Cpro下2) 编写C类Hello.c,内容为:
#include <jni.h>
#include "test_Hello.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_test_Hello_sayHello
(JNIEnv *env, jobject obj)
3) 在C工程Cpro下建立hello.def文件(用于定义导出的函数),内容为:
EXPORTS
Java_test_Hello_sayHello
4)在C工程Cpro下建立makefile文件,内容为:
step1:
gcc -c -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include" -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include\win32" -o hello.o Hello.c
step2:
gcc -shared -o hello.dll hello.o hello.def
5) 再Make Targets视图下,为Cpro工程添加两个Make
Target(对应makefile文件的内容),如下图:
step1:
g++ -c -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include" -I"F:\dev-software\dev-soft\jdk\jdk1.5.0\include\win32" -o hello.o Hello.cpp
step2:
g++ -shared -o hello.dll hello.o hello.def
3) 其他的几乎都不用改变也可以。
相关文章推荐
- Java Invoke C and C++ Using JNI
- Parameters Transfer between c++ and java by Using JNI
- NDK/Jni Develop Guild(5)c/c++ access Java Method and static method
- JNI Types and Data Structures----JAVA和C语言 c++之间转换的对照表
- java JNI 实例 实现调用c++函数
- Android JNI 通过C/C++调用JAVA方法
- Eclipse CDT MinGW生成C++动态链接库及Java JNI的调用例子
- JNI技术实践(1) Java调用C/C++代码
- Java中JNI的使用详解第五篇:C/C++中操作Java中的数组
- 使用JNI进行混合编程:在C/C++中调用Java代码--------------------cocos2d-x 3.0正式版本(7.5)
- Java JNI 调用C++ API及中文编码问题
- Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
- JNI--在C/C++中使用java数组
- Similarities and Differences between Java and C++
- 用jni的方式c/c++语言创建Java对象
- Java JNI由浅入深(包括:Java和C++互传ArrayList泛型对象参数)
- JAVA与C++::关于JNI中文字符串操作问题总结
- XML and Java - Parsing XML using Java Tutorial
- Java Thread Pool Example using Executors and ThreadPoolExecutor
- Upload and Download File using Java