第一步:编写一个.c文件,例如simple.c
/**simple.c**/
#include "simple.h"
char* _fun() //该函数在导出后可以在TCL脚本中当做命令使用
{
return "test";
}
编写一个 .h 文件
/** simple.h **/
char* _fun() ; //头文件的条件编译预处理我在这里都不写了,只简单的声明一个函数
第二步:编写一个.i文件(.i文件即时一个接口文件,swig工具通过该文件生成一个可以导出命令的 .c 文件)
如果这个文件 叫 simple.i, 那么swig 生成的那个文件就叫做 simple_wrap.c
/** simple.i **/
%module simple
%{
#include "simple.h"
%}
void _fun(); //在 .i 文件中指明要导出的函数(因为.c 文件中可能存在不止一个函数,导出我们想要的)
第三步: 使用swig工具
swig -tcl simple.i
第四步: 编译.c文件,生成共享库文件
gcc -fpic -c simple.c simple_wrap.c
gcc -shared simple.o simple_wrap.o -o simple.so
第五步:使用
tclsh //进入tcl环境
load simple.so //加载共享库到当前tcl环境
puts [_fun] //使用自定义的命令_fun, 这条命令将输出 “hello"
需要注意的地方:
1、在编译的时候一定要连同自己写那个 .c 文件一起编译,链接时也同时链接进入。不然会在 load 的时候出现找不到的命令错误。
2、每个用户的TCL安装路径可能不同,如果编译器不能自动找到该路径,需要手动指定 tcl的 include路径和 lib 路径。
阅读(3281) | 评论(0) | 转发(0) |