TCL/TK 学习笔记 之 用C定义自己的TCL命令
第一步:编写一个.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 路径。
阅读(321) | 评论(0) | 转发(0) |
上一篇:没有了
下一篇:Linux Shell之常用快捷键
- 连接你我的线,最终汇成一个圆...
- TCP/IP源码学习(54)——TCP的...
- 想自学.Net哪里资源比较好?当...
- 不需要“脚踏”实地,也能仰望...
- 喜欢坐在她自行车后面望着西下...
- linux 常见服务端口
- 【ROOTFS搭建】busybox的httpd...
- 什么是shell
- linux socket的bug??
- linux的线程是否受到了保护?...
- linux inode中磁盘地址列表有...
- LNMP 老是会出现502?
- suse 运用一个shell获取本机和...
- 虚拟机 unix 配置ip
- hp-un 主机新系统读不到磁盘阵...
TCL/TK 学习笔记 之 用C定义自己的TCL命令相关推荐
- tcl/tk学习笔记《二》 tcl/tk概览二
(6) 控制结构(粗略看一下) http://www.tcl.tk/man/tcl8.6/TclLib/NRE.htm#M5 tcl的控制语言结构,如下看一下while循环 ...
- 运动控制学习 学习笔记(八)——定义和评价学习
运动控制学习 学习笔记(八)--定义和评价学习 目标 (1)能够区分Performance(表现)与Learning(学习) (2)掌握"出现"了学习时,典型的六种Performa ...
- nginx学习笔记-01nginx入门,环境搭建,常见命令
nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...
- vue学习笔记(四)- cmd无法识别vue命令解决方法
vue学习笔记(四)- cmd无法识别vue命令解决方法 参考文章: (1)vue学习笔记(四)- cmd无法识别vue命令解决方法 (2)https://www.cnblogs.com/suRimn ...
- MongoDB学习笔记(3)- Mongo Shell 常用查询命令
MongoDB学习笔记(3)- Mongo Shell 常用查询命令 本文所使用的MongoDB版本为 4.0.10 > db.version(); 4.0.10 一.find 命令进行简查询 ...
- 《C++Primer》第九章-顺序容器-学习笔记(1)-顺序容器定义与操作
<C++Primer>第九章-顺序容器-学习笔记(1) 文章目录 <C++Primer>第九章-顺序容器-学习笔记(1) 摘要 顺序容器的定义 容器元素的初始化 将一个容器初始 ...
- mysql的sqlyog学习笔记(查询部分)(代码用命令行显示 )
索引 语言 查询 基础查询 select 查询列表 from 表名; 查询函数(调用函数,获取返回值) 起别名 +的作用 distinct的使用(去重) 查看表的结构 条件查询 按关系表达式筛选 按逻 ...
- webpack学习笔记(二):认识配置和命令执行
在上一篇webpack学习笔记中,直接在命令行中使用npx webpack对项目进行打包时所使用的配置都是默认的,入口文件默认是src目录下的index.js文件,输出文件默认是dist文件夹下的ma ...
- Scala2.11.7学习笔记(二)函数定义
鲁春利的工作笔记,好记性不让烂笔头 函数定义 def 函数名(参数列表) : 返回类型 = {函数体} 说明: 返回类型默认为空(Unit,类似于Java的void): 函数体中默认最后一行为该函数的 ...
最新文章
- HTTP POST慢速DOS攻击初探
- mysql json 函数_MYSQL 开发设计表是硬邦邦的VARHCAR 还是JSON TYPE 来处理数据更香
- java ExecutorService
- 7能看出圆的周长吗_分手后真的能看出一个人的人品吗
- UDP如何实现可靠传输
- Codeforces Round #360 E
- Boost:宏BOOST_TEST_EQ的测试
- POJ 1741tree-点分治入门
- 《算法竞赛进阶指南》0.4二分
- python闭包函数的必要条件_Python 函数 functions、闭包 closure
- Oracle的SQL语法提示30例,INDEX_JOIN,ORDERED,USE_NL,LEADING
- 在 RAID 磁盘上面架构 LVM 系统
- 各种常用STL容器选择 需求分析笔记
- matlab2008 软件下载及安装教程
- “鬼城”郑州郑东新区蝶变记,助力中部崛起
- 商业智能的研究,主要集中在哪三个方面?
- Java 数字转汉字
- 牛顿下降法和梯度下降法(最速下降法)的速度的比较
- percona-tool文档说明(4)- 监控类
- Matlab弹簧质量阻尼系统建模仿真
热门文章
- 在IE中打开或下载文件
- xiunobbs 4 mysql_轻论坛程序 - Xiuno BBS 4.0
- html和php网站哪个好,HTML和PHP网站设计实例
- 1.19(Cake Baking)
- C++字符串转换(stoi;stol;stoul;stoll;stoull;stof;stod;stold)
- 投影仪应该怎么选择?数码粉总结目前最好的家用投影仪
- 微软 Office 全家桶被 GPT-4 革新:Word 一键变成 PPT,打工人的春天来了!
- python实现百度语音之语音识别
- Edge浏览器越来越难用了?又惹“众怒”!
- 华为什么时候能升android10,华为手机什么时候升级安卓Q 华为首批适配Android10机型列表...