`
hlsps
  • 浏览: 32669 次
社区版块
存档分类
最新评论

java jni的调用

阅读更多
当我们在java中要调用C/C++程序的函数时,就需要用到jni技术。
开发环境:aix
本人写了一个测试,步骤如下:
1。新建HelloWorld.java类
public class HelloWorld
{
  static
  {
    try
    {
      //此处即为本地方法所在链接库名
      System.loadLibrary("HelloWorld");
    }catch(UnsatisfiedLinkError e){
      System.err.println( "不能加载dll文件:\n " +e.toString() );
    }
  }//end static
public native void SayHello(String strName);

}

2。运行javah HelloWorld 生成HelloWorld.h文件

3.编写helloWorld.c文件
#include <windows.h>
#include "HelloWorld.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_HelloWorld_SayHello (JNIEnv * env, jobject arg, jstring instring)
{

  const jbyte *str =
   (const jbyte *)env->GetStringUTFChars( instring, JNI_FALSE );
printf("HelloWorld,%s\n",str);

env->ReleaseStringUTFChars( instring, (const char *)str );
return;
}
int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
    return TRUE ;
}

4.编译生成.so
cc -I./ -I/usr/include -I/usr/java14/include -o \
libHolleWorld.so -bE:HolleWorld.exp -bnoentry -bM:SRE HolleWorld.c
其中HelloWorld.exp声明符号输出文件,内容如下:
Java_HelloWorld_SayHello
(注意。操作系统不同,编译生成.so的方法不同)

5.编写方法,在HelloWorld.java中加如下方法
public static void main(String args[]){
        HelloWorld hw = new HelloWorld();
        hw.SayHello("Christmas");   
    }

6.运行javac HelloWorld.java
7.运行java HelloWorld.输出如下结果
  HelloWorld Christmas




分享到:
评论

相关推荐

    Java JNI调用IC卡读卡器

    通过以上步骤,你就可以在Java应用程序中利用JNI调用IC卡读卡器的DLL,实现读取和写入IC卡的功能。注意,调用DLL可能会涉及线程安全、错误处理以及资源管理等问题,所以在实际应用中需要仔细考虑这些因素。此外,...

    JAVA JNI调用DLL完整步骤

    在某些场景下,比如调用操作系统特定的功能或者利用已有的C/C++库,我们需要使用JNI来实现Java与本地代码(如DLL动态链接库)的交互。本教程将详细介绍如何通过JNI在Java中调用DLL的完整步骤。 1. **创建Java类和...

    Java JNI调用动态库(Linux、Windows)的实现步骤

    ### Java JNI调用动态库(Linux、Windows)的实现步骤 #### 一、概述 Java Native Interface (JNI) 是一种标准的 Java 接口,它允许 Java 代码和其他语言(如 C 或 C++)编写的代码进行交互。通过 JNI,Java 应用...

    Java JNI调用DLL方法

    在本案例中,我们讨论的是如何使用Java JNI调用一个名为"AlarmTTS"的VC(Visual C++)动态链接库(DLL)并进行调试。 首先,我们需要了解Java部分的代码。`CallAlarmTTSDll`类是Java程序的核心,它定义了三个本地...

    Java jni调用c实例

    在这个"Java jni调用c实例"中,我们将深入探讨如何通过JNI在Java应用程序中调用C语言编写的函数。 首先,我们需要了解JNI的基本结构。一个典型的JNI程序包括Java源代码、C/C++源代码以及对应的头文件。Java源代码中...

    JAVA通过JNI调用C#dll的整个项目工程

    Java通过JNI调用C# DLL是一个跨平台、跨语言的技术实践,主要应用于需要利用Java的稳定性和C#的高性能场景。JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。C# ...

    Java JNI 调用C++ API/dll 示例程序

    完整的展示了Java调用C++ API/dll示例程序. 说明如下: 1. mrSocketAPICInt是准备被java调用的API 2. mrSocketAPIJavaInt是java调用C++ api的中间层 3. mrSocketAPIJavaIntDemo是java程序,展示与C++ ...Java JNI教程!

    java jni 调用刷卡器

    - JNI调用这些API,可以控制刷卡器执行读卡、识别磁条或芯片卡等任务,获取到卡片的唯一标识或其他相关信息。 4. **HttpClient技术**: - Java的`HttpURLConnection`或第三方库如Apache HttpClient,用于发起HTTP...

    JAVA项目JNI调用dll实现DEMO源码,C++&JAVA

    完整的实现java跨平台调用C程序源码,包含JAVA源码和C源码以及编译后的demo dll。将dll放到jdk bin目录下,java 项目可以直接运行。若要修改dll可以,修改C源码后重新编译生成dll。该demo处理了多线程调用c,全局...

    JavaJNI调用

    JavaJNI调用是Java平台中一种技术,它允许Java代码和其他语言(如C++或C)的代码进行交互。JNI,全称为Java Native Interface,是Java平台标准的一部分,旨在提供一个安全、高效的方式,让Java应用程序能够调用本地...

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

    Java程序可以通过JNI调用本地方法,这些本地方法是用其他语言编写的,并通过JNI接口暴露给Java。这个过程涉及到以下几个步骤: 1. **创建本地方法声明**:在Java类中,你需要声明本地方法。这些方法没有具体实现,...

    Java通过JNI调用C++的DLL文件.docx

    Java 通过 JNI 调用 C++ 的 DLL 文件 JNI(Java Native Interface)是一种允许 Java 代码和本地应用程序交互的技术。通过 JNI,Java 应用程序可以调用本地库,反之亦然。本文将详细介绍如何使用 JNI 将 Java 应用...

    JAVA JNI C++调用示例

    在本示例中,我们将探讨如何通过JNI在Java中调用C++代码,并最终打包成可执行的JAR包。 首先,让我们理解基本流程: 1. **创建Java类并声明native方法**: - `ChangeMethodFromJni.java` 和 `TestJNI.java` 文件...

    JniTest.rar Android Java JNI 调用C++

    本项目“JniTest.rar”是关于Android应用中如何使用Java通过JNI调用C++代码的一个实例。 1. **JNI基本概念**: - JNI接口定义了Java虚拟机(JVM)与本地代码(如C++)之间的通信协议。通过JNI,Java程序员可以在...

    Java JNI调用C语言写的清屏的动态链接库

    用c语言写了一个清屏的函数,然后生成动态链接库,再通过jni在java里调用清屏函数。请注意代码中的函数JNIEXPORT void JNICALL Java_Test_cls(JNIEnv *env, jobject obj),函数名字的Test是指使用该函数的Java类的...

    Java通过JNI调用DLL动态库

    Java通过JNI调用DLL动态库,亲测试编写

    JNI 调用实例(java JNI cpp互相调用实例)

    JNI 调用实例(Java、C++ 互相调用实例) 本文旨在介绍 Java 和 C++ 之间的互相调用实例,通过 JNI(Java Native Interface)技术,实现 Java 调用 C++ 和 C++ 调用 Java 的操作。下面将对标题、描述、标签和部分...

    GMSSL的java调用(JNI库和调用实例).zip

    5. **Java端的JNI调用**:在Java代码中加载动态库,然后通过`System.loadLibrary()`方法调用相应的JNI函数。 在实际应用中,开发人员需要考虑兼容性问题,如不同操作系统下的动态库加载方式、32位与64位系统的差异...

    java 的jni本地调用简单实例

    总结来说,这个实例展示了Java通过JNI调用C++本地方法的基本流程,包括Java端的声明、JNI头文件的生成、C++的实现、动态链接库的编译以及最终的调用。虽然这个实例没有涉及复杂的类型转换,但在实际应用中,根据数据...

    android JNI C 调用Java

    Android JNI(Java Native Interface)是Android系统提供的一种机制,它允许Java代码调用C/C++原生代码,同时也允许C/C++代码调用Java的方法。JNI在开发高性能、低级硬件交互、使用现有C库或者优化性能的关键部分时...

Global site tag (gtag.js) - Google Analytics