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

Swig入门教程(Java调用C++),第1张

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
 $

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5434078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存