`
gaojingsong
  • 浏览: 1201450 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【JAVA跨语言调用C++程序的小实验】

阅读更多

JAVA 调用C++步骤如下:

1) 首先在java类中声明native方法

2) 使用javah 命令生成包含native方法声明的C/C++头文件

3) 按照生成的C/C++头文件开始编写C/C++源文件

4) C/C++源文件编译为动态链接库(DLL

5) DLL文件加入到项目的ClassPath中去

6) JAVA类中调用加载DLL,然后调用声明的native方法

 

实验过程如下:

1)开发native方法



 

2)编译生成C++头文件

 

 

3)开发C++程序,编译生成DLL文件


 

 

4)java程序调用动态链接库,输出结果


 

 

实验错误处理



 

 

程序源码如下:

C++部分

#include<iostream.h>

#include "DemoJAVA.h"

 

JNIEXPORT void JNICALL Java_DemoJAVA_sayHello

(JNIEnv *, jobject){

cout<<"Hello,C++"<<endl;

cout<<"My Name is:gaojingsong"<<endl;

cout<<"This is C++ Program"<<endl;

}

 

/*

 * Class:     DemoJAVA

 * Method:    add

 * Signature: (II)I

 */

JNIEXPORT jint JNICALL Java_DemoJAVA_add

(JNIEnv *, jobject, jint a, jint b){

int res = a +b;

    cout<<"begin user C to add"<<endl;

    cout<<"Param1:"<<a<<" , Param2:"<<b<<endl;

cout<<"Result:"<<res<<endl;

return res;

}

 

 

JAVA部分:

 

public class DemoJAVA {

 

public native void sayHello();

public native int add(int a,int b);

/**

* @param args

*/

public static void main(String[] args) {

DemoJAVA demo = new DemoJAVA();

//System.load("C:/maven_workspace/tt/target/classes/DemoC.dll");

 

Runtime.getRuntime().load("C:/maven_workspace/tt/target/classes/DemoC.dll");

 

 

demo.sayHello();

demo.add(1, 999);

}

 

}

 

  • 大小: 23.2 KB
  • 大小: 27.2 KB
  • 大小: 33.4 KB
  • 大小: 10.3 KB
  • 大小: 152.9 KB
  • 大小: 117.3 KB
  • JNI.rar (460.1 KB)
  • 下载次数: 0
0
2
分享到:
评论

相关推荐

    java调用C++ webservice

    - 跨语言调用可能会涉及类型映射,确保Java和C++的数据类型兼容。 - 错误处理是关键,需要处理网络、SOAP解析、服务端异常等可能的问题。 - 注意不同平台之间的编码差异,确保数据传输过程中不丢失或错误。 6. *...

    java调用c c++程序实例

    在IT领域,跨语言通信是一项常见的任务,尤其是在Java和C/C++之间。Java因其平台无关性和丰富的库而广泛使用,而C/C++则以其高效和底层控制能力受到青睐。本实例探讨了如何在Java中调用C/C++编写的程序,以实现两者...

    C++库封装JNI接口-实现java调用c++

    总结,C++库封装JNI接口实现Java调用C++涉及的主要步骤包括:声明Java中的本地方法,生成JNI头文件,编写C++实现,编译成库,最后在Java中加载并调用。这个过程需要理解Java和C++之间的数据类型转换,以及如何在两种...

    Java语言如何调用C++语言编写的本地方法

    在Java程序中调用用C++语言编写的本地方法,是通过Java本地接口(JNI)实现的,JNI是Java提供的一套标准编程接口,用于Java代码和本地应用程序或库之间的交互。本地库通常是用C或C++编写的动态链接库(在Windows上是...

    非常好用java调用c++ dll文件demo

    Java调用C++ DLL文件是跨语言编程中的一个重要应用场景,特别是在既有Java代码库又有C++动态链接库的情况下。本文将详细讲解如何在Java程序中调用C++编写的DLL文件,以及一个可用的示例。 首先,理解Java与C++交互...

    java调用c++生成so库

    JNI允许Java应用程序调用或者被C/C++代码调用,形成了跨语言的桥梁。 标题“java调用c++生成so库”指的是在Linux环境下,通过JNI技术,Java程序可以调用预先用C++编译生成的动态链接库(.so文件)。.so文件是Linux...

    Java调用c++类对象

    Java调用C++类对象是一种跨语言交互技术,主要用于利用Java的平台独立性和C++的高性能。这种技术通常依赖于Java Native Interface ...同时,需要注意跨语言调用带来的复杂性,比如内存管理、异常处理和类型转换等问题。

    java调用C++动态链接库dll接口

    本项目涉及的"java调用C++动态链接库dll接口"是解决这种跨语言交互问题的一种方法,主要利用了Java Native Interface(JNA)这一技术。 JNA是Java平台的标准库,它允许Java代码直接调用本机库(如DLL或.so文件)的...

    JAVA + JACOB调用c++COM组件

    总之,Java通过JACOB调用C++ COM组件是一种跨语言集成的有效方式,它允许Java应用利用C++组件的功能。尽管涉及到JNI和对底层细节的理解,但通过JACOB库,这一过程变得相对简单和直观。在实际项目中,确保正确处理...

    java调用C++写的dll的实例

    这种跨语言调用机制使得开发者能够充分利用Java的平台无关性和C++的高性能优势,实现复杂的功能或者提升程序效率。在实际项目中,需注意处理好数据类型的转换,确保Java和C++之间的数据传递正确无误。同时,考虑到...

    跨语言调用C++动态库.zip

    标题 "跨语言调用C++动态库.zip" 暗示了这个压缩包可能包含一个教程或项目,展示了如何在不同的编程语言(如Python和Java)中调用C++编写的动态链接库(DLL或.so文件)。这通常涉及到语言间的接口(如JNI for Java)...

    Java调用C++动态库

    在IT行业中,跨语言通信是常见的需求之一,特别是在需要利用特定语言的优势或者集成现有系统时。...通过这些文件,你可以逐步构建一个完整的示例,从Java调用C++动态库到验证其功能,从而深入理解这一跨语言通信机制。

    JAVA调用C++demo

    在IT行业中,跨语言通信是一项常见的需求,Java和C++作为两种不同的编程语言,它们各自在特定领域有着显著的优势。为了充分利用这两种语言的特点,开发者有时需要在Java代码中调用C++编写的库或功能。本篇文章将详细...

    c++,java跨语言通信

    1. **JNI(Java Native Interface)**:Java服务端可以使用JNI来调用C++编写的原生代码。JNI是Java平台的一部分,允许Java代码和其他语言写的代码进行交互。开发者可以编写C/C++的动态链接库,然后通过JNI接口在Java...

    Android Studio3.0开发JNI流程------C++调用Java以及Java调用C++,C++/Java互相调用

    本文将详细讲解在Android Studio 3.0中如何实现C++调用Java以及Java调用C++的过程。 首先,我们需要在Android Studio项目中配置NDK(Native Development Kit),它是Android用于编写和编译C/C++代码的工具集。在...

    Linux下跨语言调用C++实践.docx

    ### Linux下跨语言调用C++实践 #### 1. 背景介绍 随着软件工程的发展,不同的编程语言因其特点被广泛应用于特定领域。例如,Python因其丰富的库支持及简洁的语法,常用于数据分析与科学计算;而C++则以其高效能...

    java调用c++ dll的示例

    在IT行业中,跨语言通信是一项常见的任务,尤其是在Java和C++这样的不同编程环境中。本示例探讨的主题是如何在Java程序中调用C++编写的动态链接库(DLL)功能。这个过程通常称为JNI(Java Native Interface),它是...

    swig--在java、C#中调用c++写的DLL(以vs2012配置为例)

    最后,运行Java或C#应用程序,它们将通过SWIG生成的接口调用C++ DLL中的函数。 总结一下,本教程主要介绍了如何使用SWIG在Java和C#中调用C++编写的DLL,涉及到的知识点包括:SWIG工具的使用,C++ DLL的创建,接口...

    JNA调用C++动态库,传入二维数组,通过C++返回二维数组,java调用C++完整案例

    JNA通过映射Java接口到本地函数,实现了跨语言调用。它提供了一个简洁的方式来定义C/C++函数原型,并将其映射到Java方法上。例如,如果你有一个C++函数接收二维数组并返回二维数组,你可以这样在Java中定义: ```...

Global site tag (gtag.js) - Google Analytics