SWIG 是一个非常优秀的开源工具,支持您将 C/C++
代码与任何主流(脚本)语言(Ruby、Perl、JAVA、c#)相集成。 能根据定义的规则(*.i)文件生成供其它主流(脚本)语言调用的代码。
基本的使用指南http://www.swig.org/tutorial.html
一个示例:
print_hello.h
#ifndef PRINT_HELLO_H__
#define PRINT_HELLO_H__
#ifdef __cplusplus
extern "C" {
#endif
void print();
#ifdef __cplusplus
}
#endif
#endif
print_hello.cpp
#include "print_hello.h"
#include <stdio.h>
void print()
{
printf("hello swig\n");
}
print_hello.i
%module print_hello
%{
extern void print();
%}
extern void print();
main.java
public class main {
public static void main(String argv[]) {
// System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("print_hello");
print_hello.print();
}
}
build.sh
swig -java print_hello.i
gcc -fPIC -c print_hello.cpp print_hello_wrap.c -I/usr/lib/jvm/java-6-openjdk-amd64/include
gcc -shared print_hello.o print_hello_wrap.o -o libprint_hello.so
javac main.java
运行:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
java main
输出:
hello swig