栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Swig入门教程(Java调用C++)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Swig入门教程(Java调用C++)

swig官网教程:http://www.swig.org/tutorial.html
swigwin下载地址:https://sourceforge.net/projects/swig/files/swigwin/

安装后为了方便,可以添加安装目录到环境变量path。

本文主要是手把手教萌新们如何用官方用例构建(有许多本人亲身采坑血泪史)

首先我们看一个最简单的例子,如何用swig让java调用c。这里使用的是mingw和java8。
首先构建如下example.c文件


#include 

double My_variable = 3.0;

int fact(int n) {
    if (n <= 1) return 1;
    else return n * fact(n - 1);
}

int my_mod(int x, int y) {
    return (x % y);
}

char *get_time() {
    time_t ltime;
    time(<ime);
    return ctime(<ime);
}

之后构建example.i文件

 
 %module example
 %{
 
 extern double My_variable;
 extern int fact(int n);
 extern int my_mod(int x, int y);
 extern char *get_time();
 %}
 
 extern double My_variable;
 extern int fact(int n);
 extern int my_mod(int x, int y);
 extern char *get_time();

在当前目录打开cmd,然后输入:

$ swig -java example.i
$ gcc -c example.c example_wrap.c -I "C:Program Filesjdk1.8.0_262include" -I "C:Program Filesjdk1.8.0_262includewin32"
$ gcc -shared example.o  example_wrap.o -mno-clwb -Wl,--add-stdcall-alias  -o example.dll

创建main.java

public class main {
    public static void main(String argv[]) {
        System.loadLibrary("example");
        System.out.println(example.getMy_variable());
        System.out.println(example.fact(5));
        System.out.println(example.get_time());
    }
}
 $ javac main.java
 $ java main
 3.0
 120
 Mon Mar  4 18:20:31  2002
 $
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458563.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号