springboot 调用 c++生成的so库文件

一、创建c文件

SoTest.h
cpp 复制代码
#pragma once
class SoTest
{
	int Add(int a,int b);
};
SoTest.cpp
cpp 复制代码
#include "SoTest.h"

int SoTest::Add(int a, int b) {
	return a + b;
}

二、创建so文件

cpp 复制代码
/home/ubuntu/projects/SoTest/bin/x64/Debug/libSoTest.so

三、java代码

Maven依赖

复制代码
<dependency>
	<groupId>net.java.dev.jna</groupId>
	<artifactId>jna</artifactId>
	<version>5.9.0</version>
</dependency>

核心代码

java 复制代码
public class SOTest {
    public interface SoTest extends Library {
        static SoTest INSTANCE = Native.load("/home/ubuntu/projects/SoTest/bin/x64/Debug/libSoTest.so", SoTest.class);

        int _ZN6SoTest3AddEii(String x, int a, int b);         // c方法
    }


    public int add(int a, int b) {
        return SoTest.INSTANCE._ZN6SoTest3AddEii("", a, b);
    }

}

测试关键代码

java 复制代码
    public static void main(String[] args){
        SOTest soTest = new SOTest();
        soTest.add(1,1);
    }
相关推荐
钱彬 (Qian Bin)28 分钟前
一文掌握工业缺陷检测项目实战(Pytorch算法训练、部署、C++ DLL制作、Qt集成)
c++·pytorch·python·qt·实战·工业缺陷检测·faster rcnn
努力努力再努力wz37 分钟前
【c++进阶系列】:万字详解AVL树(附源码实现)
java·运维·开发语言·c++·redis
爱学习de测试小白37 分钟前
13-Java-面向对象-封装和this关键字
java
-哈喽沃德-37 分钟前
Date、BigDecimal类型值转换
java
凉、介39 分钟前
U-Boot 多 CPU 执行状态引导
java·服务器·前端
一个尚在学习的计算机小白40 分钟前
spring
android·java·spring
csdn_clwjc41 分钟前
synchronized 锁升级
java·juc
脚大江山稳43 分钟前
docker使用nginxWebUI配置
java·docker·容器
Miraitowa_cheems1 小时前
LeetCode算法日记 - Day 34: 二进制求和、字符串相乘
java·算法·leetcode·链表·职场和发展
小张成长计划..1 小时前
C++基础知识
c++