JNI-Java调用C++牛刀小试

简介:

 网上看了好多贴子,但是说的虽大体一致,但还是弄了好久好久

1.Java配置这个就不提了、

2.VC要添加的如图

(1)

 

 

(2)

 

目录结构

Dictionary(本地目录)

--|DictionaryClinet.java

--|DictionaryClinet.class(编译后生成)

--|DictionaryClinet.h(javah生成)

--|--Dictionary(包名)

--|--|DictionaryClinet.class

 

 

1.编译命令

D:\Java\Dictionary>javac DictionaryClinet.java

2.Dictionary是java文件中的包名,DictionaryClinet是类名。在目录下新建文件夹Dictionary,然后把生成的DictionaryClinet.class复制到该文件夹。

3.生成头文件

D:\Java\Dictionary>set classpath=D:\Java\Dictionary

D:\Java\Dictionary>javah -jni Dictionary.DictionaryClinet

4.通过小测试,实现了Java与C++的调用。

 

-------------以上是参考帖子总结出来的,算是下面这个帖子的一些补充-----------------

原文地址:

http://www.cnblogs.com/cpcpc/archive/2012/08/13/2636199.html

原文:

第一步:安装Java jdk,eclipse。
第二步,配置Java环境变量, java环境变量配置
第三步,新建一个Java应用程序,名为:TestNativeCode,包名:com.liyong.TestNativeCode,类名:TestNativeCode
第四步,在TestNativeCode类里面添加如下代码:
package com.liyong.TestNativeCode;  public class TestNativeCode {     public native void sayHello();     public static void main(String[] args) {         System.loadLibrary("NativeCode");         TestNativeCode nativeCode=new TestNativeCode();         nativeCode.sayHello();         } }

第五步,编译Java文件
1,运行-->cmd-->进入TestNativeCode项目的src目录下编译该Java类,命令 javac ./com/liyong/TestNativeCode/TestNativeCode.java。在该TestNativeCode.java目录下会生成TestNativeCode.class文件
2,使用javah生成头文件,命令 javah -jni com.liyong.TestNativeCode.TestNativeCode。在src目录下生成com_liyong_TestNativeCode_TestNativeCode.h文件。

第六步,编译C++类库
1,打开VS2008,新建Win32 项目NativeCode,如图所示:

确定后,在“应用程序类型”中选择“DLL”,如图:

2,将上一步生成的com_liyong_TestNativeCode_TestNativeCode.h添加到项目头文件中。

3,在NativeCode项目的“源文件”中添加NativeCode.cpp文件,具体如蓉如下

#include "stdafx.h" #include "com_liyong_TestNativeCode_TestNativeCode.h" #include <iostream>
using namespace std;  JNIEXPORT void JNICALL Java_com_liyong_TestNativeCode_TestNativeCode_sayHello(JNIEnv * env, jobject obj) { cout<<"Hello NDK!"<<endl; //printf("Hello NDK!");
}

4,使用Release编译,生成NativeCode.dll,将其拷贝到java环境变量Java_Home的Bin目录下,比如,LZ的Java_Home目录是
C:\Program Files\Java\jdk1.6.0_25,将NativeCode.dll拷贝到C:\Program Files\Java\jdk1.6.0_25\bin目录下。

第七步,运行Java应用程序,会输出“Hello NDK!”,Ok,成功!这里只是一个简单的例子,具体的应用就靠大家举一反三啦



本文转自 天涯飞客 51CTO博客,原文链接:http://blog.51cto.com/425093014/1181233,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 Java 编译器
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
100 0
|
15天前
|
算法 Java C语言
C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
|
3月前
|
Java 编译器 C++
Java开发和C++开发有什么区别
Java开发和C++开发有什么区别
|
3月前
|
Java 程序员 C语言
IT圈茶余饭后的“鄙视链” C,C++,Java,Python
IT圈茶余饭后的“鄙视链” C,C++,Java,Python
56 0
|
5月前
|
存储 Java C++
【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别
C++与JAVA之间存在着一些区别,我们需要重视区别才能更好地灵活学习和运用不同的编程语言。 总之,C++中可以利用==来判断两个字符串的值是否相等;而JAVA中必须使用String类的成员函数equals()(区分大小写)和equalsIgnoreCase()(不区分大小写)来判断两个字符串的值是否相等。
41 0
|
6月前
|
Java C++
JAVA和C++比较之我见
JAVA和C++比较之我见
|
4月前
|
Java 数据安全/隐私保护 C++
一款免配置的浏览器编程工具jupyter,可以同时编写 python,java,c,c++,体积小
一款免配置的浏览器编程工具jupyter,可以同时编写 python,java,c,c++,体积小
81 1
|
1月前
|
算法 IDE Java
【软件设计师备考 专题 】面向对象程序设计语言:C++、Java、Visual Basic和Visual C++
【软件设计师备考 专题 】面向对象程序设计语言:C++、Java、Visual Basic和Visual C++
41 0
|
1月前
|
Java 程序员 C++
【Java】Java与C++:比较与对比
【Java】Java与C++:比较与对比
24 0
|
2月前
|
Java 数据安全/隐私保护 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-193 Password Suspects(C++&Java)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-193 Password Suspects(C++&Java)
20 1