JNA简单范例

简介: JNA简单范例

C头文件

#ifndef __JNATEST_H__
#define __JNATEST_H__
#define LOG_HERE() printf("%s-%d\n", __func__, __LINE__)
void test_jna();
#endif

C代码

#include <stdio.h>
#include "jnatest.h"
void test_jna()
{
    LOG_HERE();
    printf("called from JAVA\n");
}
JAVA代码
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class JnaTest
{
  //继承Library,用于加载库文件  
  public interface CLibrary extends Library
    {
  CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
            (Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
  // 声明一个跟C语言的printf()一样的方法,
  void printf(String format, Object... args);
  } 
  public interface TestLibrary extends Library
    {
  TestLibrary INSTANCE = (TestLibrary) Native.loadLibrary("jnatest", TestLibrary.class);
        void test_jna();
  } 
  public static void main(String[] args)
    {
  //调用  
  CLibrary.INSTANCE.printf("From JAVA To C, year=%d\n", 2022);
        TestLibrary.INSTANCE.test_jna();
  }
}


安装依赖库

sudo apt install -y openjdk-8-jdk
sudo apt install -y libjna-java
sudo apt install -y libjna-platform-java

编译

gcc -fPIC -shared -o libjnatest.so jnatest.c
sudo ldconfig
javac -extdirs /usr/share/java JnaTest.java

测试

USJ_DIR=/usr/share/java
CLASS_DIRS=.
CLASS_DIRS=${CLASS_DIRS}:${USJ_DIR}/jna.jar
CLASS_DIRS=${CLASS_DIRS}:${USJ_DIR}/jna-platform.jar
java  \
    -cp ${CLASS_DIRS} \
    JnaTest
目录
相关文章
|
6月前
|
存储 Java C语言
Java代码解释Flash原理
Java代码解释Flash原理
80 0
|
Java 测试技术 C#
【开发者笔记】java 利用jna调用c#的dll
          一、需求阐述:   如果我们的项目利用c#开发,到了开发后期需要和java组进行合作,其中有一部分业务逻辑利用c#已经code completed,那么我们可能会考虑用java来调用现成的c#dll实现需求。
17405 0
|
Java
Java 目录操作demo (努力学习每一天)(一)
Java 目录操作demo (努力学习每一天)(一)
58 0
|
存储 Java 编译器
《JavaSE-第五章》之C中的函数-java中的方法
《JavaSE-第五章》之C中的函数-java中的方法
|
存储 Java
【JavaSE专栏34】Java 函数命令行传参
【JavaSE专栏34】Java 函数命令行传参
220 0
|
Java
Java 目录操作demo (努力学习每一天)(三)
Java 目录操作demo (努力学习每一天)(三)
76 0
|
Java
Java 目录操作demo (努力学习每一天)(二)
Java 目录操作demo (努力学习每一天)(二)
71 0
|
Java
NLPIR java测试(没找到范例代码)
NLPIR java测试(没找到范例代码)
129 0
|
Java
JNA简单范例
JNA简单范例
76 0
|
Java 计算机视觉
OpenCV最简JAVA版范例
OpenCV最简JAVA版范例
142 0