Java调用C/C++程序示例
2017-06-26 10:52
218 查看
1、新建一个Java类名称为:TestJavaCallC
2、在类中添加如下代码:
3、windows环境下:
3.1、运行–>cmd–>进入TestJavaCallC 项目的src目录下编译该Java类,命令 javac .(具体路径)/TestJavaCallC .java。在该TestJavaCallC .java目录下会生成TestJavaCallC .class文件
3.2使用javah生成头文件,命令 javah -jni Test.TestJavaCallC 。在src目录下生成Test_TestJavaCallC.h文件。文件内容:
4、生成C/C++的DLL文件。
4.1、打开VS2013–>新建Visual C++ –>Win32项目–>点击确认
4.2、点击下一步–>选择DLL(D)–>点击完成
4.3、将上一步生成的Test_TestJavaCallC.h添加到生成的项目头文件中。
4.4、在项目源文件中添加NativeCode1.cpp文件。
4.5、在NativeCode1.cpp文件中添加如下代码(如果头文件Test_TestJavaCallC.h无法加载,则需要手动配置:项目右键–>属性–>C/C++ –>常规–>附加包含目录,将投文件的路径添加进去,如果有多个不同路径,则添加多个):
4.6、项目右键–>生成,在Debug目录下生成一个NativeCode1.dll文件。将其拷贝到java环境变量Java_Home的Bin目录下,如:C:\Program Files\Java\jdk1.7.0_79\bin中。
5、运行Java程序:
System.loadLibrary(“NativeCode1”);中的NativeCode1是NativeCode1.dll文件名称,不要带dll。
如果平台Java是64位的,你需要把你的DLL编译成64位:在Debug下拉菜单中选择配置管理器–>活动解决方案平台中选择新建–>从此处复制设置中选择X64–>确定–>编译生成DLL即可。
2、在类中添加如下代码:
package Test; public class TestJavaCallC { public native void sayHello(); public static void main(String[] args){ System.loadLibrary("NativeCode1"); TestJavaCallC tNative = new TestJavaCallC(); tNative.sayHello(); } }
3、windows环境下:
3.1、运行–>cmd–>进入TestJavaCallC 项目的src目录下编译该Java类,命令 javac .(具体路径)/TestJavaCallC .java。在该TestJavaCallC .java目录下会生成TestJavaCallC .class文件
3.2使用javah生成头文件,命令 javah -jni Test.TestJavaCallC 。在src目录下生成Test_TestJavaCallC.h文件。文件内容:
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class Test_TestJavaCallC */ #ifndef _Included_Test_TestJavaCallC #define _Included_Test_TestJavaCallC #ifdef __cplusplus extern "C" { #endif /* * Class: Test_TestJavaCallC * Method: sayHello * Signature: ()V */ JNIEXPORT void JNICALL Java_Test_TestJavaCallC_sayHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
4、生成C/C++的DLL文件。
4.1、打开VS2013–>新建Visual C++ –>Win32项目–>点击确认
4.2、点击下一步–>选择DLL(D)–>点击完成
4.3、将上一步生成的Test_TestJavaCallC.h添加到生成的项目头文件中。
4.4、在项目源文件中添加NativeCode1.cpp文件。
4.5、在NativeCode1.cpp文件中添加如下代码(如果头文件Test_TestJavaCallC.h无法加载,则需要手动配置:项目右键–>属性–>C/C++ –>常规–>附加包含目录,将投文件的路径添加进去,如果有多个不同路径,则添加多个):
// NativeCode1.cpp : 定义 DLL 应用程序的导出函数。 // #include "stdafx.h" #include "Test_TestJavaCallC.h" #include<iostream> using namespace std; JNIEXPORT void JNICALL Java_Test_TestJavaCallC_sayHello(JNIEnv *, jobject) { cout << "hello word" << endl; }
4.6、项目右键–>生成,在Debug目录下生成一个NativeCode1.dll文件。将其拷贝到java环境变量Java_Home的Bin目录下,如:C:\Program Files\Java\jdk1.7.0_79\bin中。
5、运行Java程序:
package Test; public class TestJavaCallC { public native void sayHello(); public static void main(String[] args){ System.loadLibrary("NativeCode1"); TestJavaCallC tNative = new TestJavaCallC(); tNative.sayHello(); } }
System.loadLibrary(“NativeCode1”);中的NativeCode1是NativeCode1.dll文件名称,不要带dll。
如果平台Java是64位的,你需要把你的DLL编译成64位:在Debug下拉菜单中选择配置管理器–>活动解决方案平台中选择新建–>从此处复制设置中选择X64–>确定–>编译生成DLL即可。
相关文章推荐
- Java通过JNI调用本地C/C++程序--常用示例
- 1Java程序通过JNI调用本地C++_第一个示例_HelloWorld
- 从 C/C++ 程序调用 Java 代码
- JNI基础(一):Java程序调用C/C++
- 从 Java 程序调用 C/C++ 代码
- [2014.1.31] Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)
- Java调用C/C++程序
- 3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例
- linux下使用jni实现c++调用java程序(5)参考资料总结
- linux下使用jni实现c++调用java程序(2)找不到java类的问题
- 利用Jni技术让C++调用Java程序
- 3Java程序JNI调用C++之修改属性调用方法
- 3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例
- eclipse JNI示例。利用C/C++实现JAVA中调用的函数
- C++/JAVA程序调用weka聚类算法的方法 推荐
- 4Java程序JNI调用C++之C++创建Java对象
- 用JNI进行Java编程---从Java程序调用C/C++代码
- 用JNI进行Java编程---从C/C++程序调用Java代码
- Java 程序调用一个 C++ 类的方法
- 初步了解JNI------java程序调用c/c++程序