在java中直接调用C语言定义的函数

绝对零度 发布于 2014/06/07 21:04
阅读 522
收藏 1

在Java中,通过使用TCC4Java库,可以在Java运行时直接调用C文件里面定义的函数。而不用事先将C编译成动态链接库,然后借助于JNI或者JNA来调用C函数。这样可以方便的将C当成脚本语言在Java中使用。

上个简单点例子:

runCFunction.c

int sum(int a, int b) {
	return a + b;
}




RunCFunction.java

import java.io.IOException;

import cn.com.tcc.State;
import cn.com.tcc.TCC;

import com.sun.jna.Function;

public class RunCFunction {
	public static void main(String[] args) throws IOException {
		// 初始化TCC
		TCC.init("./tcc");

		// 编译C文件
		State state = new State();
		state.compile("./runCFunction.c");
		state.relocateAuto();

		// 获取C文件里面定义的函数
		Function sumFunc = state.getFunction("sum");

		// 调用函数
		System.out.println(String.format("%d + %d = %d", 3, 5,
				sumFunc.invokeInt(new Object[] { 3, 5 })));
		System.out.println(String.format("%d + %d = %d", 10, 99,
				sumFunc.invokeInt(new Object[] { 10, 99 })));

		state.delete();
	}
}

程序输出为:

3 + 5 = 8
10 + 99 = 109




加载中
0
NDSM
NDSM
好厉害的样子
0
Alex思想者
Alex思想者
TCC4Java库给个链接地址就更好了
Alex思想者
Alex思想者
回复 @绝对零度 : Thanks
绝对零度
绝对零度
https://github.com/wangzhengbo/TCC4Java http://sourceforge.net/projects/tcc4java/files
返回顶部
顶部