在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
TCC4Java库链接:
https://github.com/wangzhengbo/TCC4Java
http://sourceforge.net/projects/tcc4java/files
发表评论
抢沙发~