没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
1
I. 目录
I.
目录...........................................................................................................................................1
II.
JAVA C/CPP 互相调用实例(姊妹篇之一)——JAVA 调用 C/CPP....................................4
一
先制作一个系统中有的 DLL 文件(
CPP
给出的
SDK
接口)..................................................4
二
JNI............................................................................................................................................7
1
、
编写
java
文件
...............................................................................................................7
2
、
生成
.h
头文件
................................................................................................................8
3
、
用
c/cpp
实现这个头文件
..............................................................................................9
三
测试........................................................................................................................................10
四
最后补充................................................................................................................................ 11
III.
JAVA C/CPP 互相调用实例(姊妹篇之二)——C/CPP 调用 JAVA..............................11
一、
编写
JAVA
代码..................................................................................................................12
二、
编译
JAVA
代码................................................................................................................12
三、
编写
C/C++
代码............................................................................................................13
四、
运行
EXE
..........................................................................................................................18
IV.
JAVA JNI 编程进阶 ...........................................................................................................18
一、
解决性能问题..................................................................................................................18
二、
解决本机平台接口调用问题...........................................................................................19
三、
嵌入式开发应用(JNI小例子)..........................................................................................20
1
、
新增一个基础类
..........................................................................................................22
2
、
定义新类继承基础类
..................................................................................................23
3
、
编写调用类
..................................................................................................................23
4
、
新增两个本地方法
......................................................................................................24
5
、
修改
RunMain
类
.......................................................................................................25
6
、
新增一个方法处理
java
对象
......................................................................................26
7
、
新增一个方法处理数组
...............................................................................................29
8
、
改写
RunMain..............................................................................................................32
四、
参考资料:......................................................................................................................33
V.
ECLIPSE+CDT+MINGW 进行 JAVA调用 C/C++..........................................................34
一、
安装
ECLIPSE
3.2。............................................................................................................34
二、
安装 M
IN
GW。 ...............................................................................................................34
1
、
下载
MinGW................................................................................................................34
2
、
安装
.............................................................................................................................34
3
、
安装版本
.....................................................................................................................34
4
、
选择安装的编译器
......................................................................................................34
5
、
选择安装路径,下一步
...............................................................................................35
6
、
等待下载软件
..............................................................................................................35
三、
M
IN
GW 的环境变量设置................................................................................................35
2
1
、
设置
Path.....................................................................................................................35
2
、
设置
C_INCLUDE_PATH.............................................................................................35
3
、
设置
CPLUS_INCLUDE_PATH....................................................................................35
四、
做一个小技巧修改 ..........................................................................................................35
五、
安装 CDT 插件................................................................................................................36
1
、
下载
CDT
插件
............................................................................................................36
2
、
安装
CDT
插件
............................................................................................................36
六、
简单介绍 CDT 的使用吧.................................................................................................36
1
、
新建一个
C++
项目
.....................................................................................................36
2
、
输入
New Project
名字
.................................................................................................36
3
、
给项目新建一个的源文件
...........................................................................................36
4
、
接着出现文件添加的窗口,在
File Name
栏里面写上文件名
...................................36
5
、
编辑
hello.cpp..............................................................................................................37
6
、
添加一个编译命令
......................................................................................................37
七、
让我们开始进入真正的工作吧!....................................................................................38
The Java side............................................................................................................................38
1
、
建立
Java
工程
JavaHello
,编写
java
类
....................................................................38
2
、
用命令生成头文件
......................................................................................................38
The C side
-
Compiling the Library ..........................................................................................40
1
、
建立标准
C
工程
Cpro
,并生成
dll
文件
....................................................................40
1)
将生成的头文件 test_Hello.h 拷贝到 C 工程 Cpro 下...........................................................40
2)
编写 C 类 Hello.c,内容为:................................................................................................40
3)
在 C 工程 Cpro 下建立 hello.def 文件(用于定义导出的函数),内容为:.........................40
4)
在 C 工程 Cpro 下建立 makefile 文件,内容为: ................................................................40
5)
Make Targets .........................................................................................................................40
6)
Make Targets 视图下双击 step1,在 C 工程 Cpro 下生成 hello.o 文件。.............................41
7)
Make Targets 视图下双击 step1,在 C 工程 Cpro 下生成 hello.dll 文件。 ..........................41
2
、
JAVA
调用
DLL............................................................................................................41
1)
将 hello.dll 拷贝到 Java 工程 JavaHello 下。........................................................................41
2)
运行 Hello.java,则可以看到输出结果:.............................................................................41
1)
将 Hello.c 改为 Hello.cpp......................................................................................................41
2)
将 makefile 内容改为:........................................................................................................41
3)
其他的几乎都不用改变也可以。.........................................................................................42
评论:............................................................................................................................................42
VI.
C++如何调用 JAVA程序....................................................................................................51
D
EMO
M
AIN
.
JAVA
内容如: ..........................................................................................................51
采用
VC
6++
IDE,采用 JNI 技术实现。.....................................................................................51
1
、
编译时
.........................................................................................................................51
2
、
运行时
.........................................................................................................................51
程序的关键在..............................................................................................................................53
VII.
JNI ......................................................................................................................................53
一、
定义.................................................................................................................................53
二、
设计目的 .........................................................................................................................54
3
三、
书写步骤 .........................................................................................................................54
1)
编写
java
程序:这里以
HelloWorld
为例。
....................................................................54
2)
编译
....................................................................................................................................55
3)
生成扩展名为
h
的头文件
.................................................................................................55
4)
编写本地方法实现和由
javah
命令生成的头文件里面声明的方法名相同的方法。
.......56
5)
生成动态库
........................................................................................................................56
6)
运行程序
java HelloWorld
就
ok......................................................................................56
四、
调用中考虑的问题 ..........................................................................................................56
1)
java
和
c
是如何互通的?
...............................................................................................57
2)
如何将
java
传入的
String
参数转换为
c
的
char*
,然后使用
?....................................57
3)
将
c
中获取的一个
char*
的
buffer
传递给
java
?
..........................................................57
4)
不知道占用多少空间的
buffer
,如何传递出去呢?
......................................................58
五、
对 JAVA 传入数据的处理................................................................................................58
1)
如果传入的是
bytearray
的话,作如下处理得到
buffer
:
............................................58
VIII. C/C++调用 JAVA类 .......................................................................................................58
一、
加载虚拟机:..................................................................................................................59
二、
获取指定对象的类定义:.................................................................................................59
三、
获取要调用的方法: ......................................................................................................59
四、
调用 JAVA类方法: ........................................................................................................60
五、
获得类属性的定义: ......................................................................................................60
六、
数组处理:......................................................................................................................60
七、
异常:.............................................................................................................................60
八、
多线程调用......................................................................................................................61
J
AVA
代码.....................................................................................................................................61
命令行运行:JAVAP -S -P MYTEST ,输出:...................................................................................62
C 代码
TESTJAVA
.
C
:....................................................................................................................62
编译:.........................................................................................................................................65
运行结果:..................................................................................................................................65
4
II. java c/cpp 互相调用实例(姊妹篇之一)
——java 调用 c/cpp
此文章纯粹实例操作,关于 jni已经有不少人不少文章讲的很清楚了,所以就不罗列理
论了。
看了 kimmking的 JNI技术实践小结,又读了 danlley的 Java JNI 编程进阶,这些文
章中都是自己调用自己,方法很 java化,而对于真正的调用 dll还是不理解,心中一直存
在问题:现在系统中已经有的 dll我该如何去调用?如果一个大工程里需要 cpp和 java一
起开发,cpp给出接口、SDK,我该如何处理?
带着这些疑问我决定从 cpp到 java的 jni调用这个全过程亲自动手操作一下。
完成此示例需要下列工具/环境:
1) java环境(废话谁都知道)
2) 编译 c/cpp的工具。推荐用 vs/vc++,我用的是 vs2008(vs2005也可以)
一 先制作一个系统中有的 DLL文件(cpp给出的 sdk接口)
既然是测试我们就把我们这个 dll叫做 testDll吧,为了简单起见,我只写一个 add
方法,就是简单的 2个数字相加,对于真正的开发中我们肯定会遇到其他类型,java到 c/cpp
中类型需要转换,具体类型转换对应关系查一下就能得到,我也不在列举。
c/cpp中一个 class一般包含 2个文件,一个头文件定义(*.h),一个文件主体
(*.c/*.cpp)。
啰嗦了这么多还是直接动手吧,先在 vs2008中建立一个工程(当然你也可以直接编写
不用这些 IDE工具,gcc g++的命令自己 g。下同,不在注释不在废话),选取 win32工程,
键入工程名字 testDll,点击 next选取 DLL,然后点击完成。如下图:
5
剩余65页未读,继续阅读
ming_02
- 粉丝: 0
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1