windows环境与Linux环境下调用c++程序

本文介绍如何在Windows和Linux系统中利用Maven和JNA调用C++动态链接库,包括配置IDEA、打包jar与.so文件,以及解决跨平台兼容问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在此之前,需要在java编译软件IDEL中配置本地的Maven仓库等,可自行网上搜索配置

一、在Windows系统下调用c++软件生成的dll文件。

1.在IDEL中创建Maven工程,配置下载jna包等,在pom文件中写入如下配置即可

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>com.sun.jna</groupId>
        <artifactId>jna</artifactId>
        <version>3.0.9</version>
    </dependency>
</dependencies>
<build>
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <includeSystemScope>true</includeSystemScope>
            <mainClass>tz.dlltest</mainClass>
        </configuration>
    </plugin>
</plugins>
</build>

2.创建interface以及java文件夹

 

 3.在vs2019中创建c++动态链接库,x86与x64的选择与电脑有

4.将编译产生的动态链接库dll放到jdk的bin目录下即可,正常情况下IDEA中的运行结果如下

 二、在Linux系统下将c++编译软件保存的cpp文件打包成.so文件,使用Maven工具包将java调用程序打包成jar包,在Linux系统下使用jar包调用.so文件。

1.使用Maven工具包打包java程序为jar包,这里的mainclass后面的内容需要改成你的主函数所在的类名

 pom文件的配置可能有所不同。

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.sun.jna</groupId>
            <artifactId>jna</artifactId>
            <version>3.0.9</version>
        </dependency>
    </dependencies>
    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
                <mainClass>tz.dlltest</mainClass>
            </configuration>
        </plugin>
    </plugins>
    </build>
</project>

2.编写cpp文件

 3.开启虚拟机,使用xshell链接虚拟机,第一次使用需要创建一个目录,用来存放所有调用的文件内容,我是在opt文件下创建的,下面执行的操作是删除之前的东西。

 4.之后即可打开xftp来传输文件

 5.将cpp文件编译为.so文件g++ -std=c++11 -shared -fpic Dll1.cpp -o libdlltest.so

红色地方为cpp文件,蓝色为要编译为.so文件的文件名,需要加lib。

 6.配置.so文件读取位置有可能在执行的过程中会出现找不到.so的错误,需要在Linux中的配置文件中配置.so的扫描目录:命令:vim /etc/profile,加入如下的配置:export LD_LIBRARY_PATH=”LD_LIBRARY_PATH:/opt/testdll”

7.使用jar包调用.so文件java -jar 后面是jar包的名字

 8.此时虚拟机中出现正确结果表明调用成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值