>直接引用工具自带的库文件 通过指令: 1.1查看能直接调用的库文件路径 #可以查到工具默认库文件路径,一般包括回显中的路径以及回显中路径的父路径。 info library #D:/Script.NET/V2/Interps/Tcl/Lib/tcl8.4 1.2、在上一步的路径下找找没有自己需要的库,通过指令: package require xxx 引用,一般直接写tcl文件名即可,如果不对,查看pkgIndex.tcl里package ifneeded 后边的名称。 >引用别人的库文件或者添加自己的库文件 下边的工具指Script.NET 1、将别人写好的库文件拷贝到编译器所在文件路径下。 路径:D:\Script.NET\V2\interps\Tcl\lib下,脚本中添加"package require xxx"后,就可调用了。 2、创建自己的library库 注意:一般不要使用工具自带的控制台生成pkg_mkIndex,问题较多。 可以用ActiveTcl(下边的操作,尽量使用ActiveTcl安装后的tclsh.exe交互界面执行命令) 2.1、在工具安装路径(如D:\Script.NET\V2\lib),lib库路径下创建自己的lib(创建一个文件夹),如:mylib1.0 2.2、将自己需要用到的所有tcl文件都放到这个文件夹下(tcl文件中一定要包含:package provide fun 1.0),provide提供的名称和版本。 2.3、执行工具自带的控制台(工具-->控制台),执行pkg_mkIndex -direct "D:\\Script.NET\\V2\\lib\\mylib1.0" *.tcl (tclsh.exe执行时可以在脚本中添加puts xxx,当第一次调用时,会显示puts后的内容,使用工具自带的控制台会添加puts会导致生成失败,但不会提示和报错) 说明:pkg_mkIndex [-direct--使用前直接加载当前路径下的文件,不管用到与否|-lazy -verbose--动态加载,使用时才加载,否则,不加载] 2.4生成成功后,会有类似如下显示: package ifneeded my_fun 1.0 [list source [file join $dir fun.tcl]] package ifneeded my_namespace 1.0 [list source [file join $dir my_namespace.tcl]] 说明:动态和静态不一样,但是必有引用的文件,不可能全是注释内容 注意:文件中可以有多个方法,但是不能包含puts xxx,否则pkg_mkIndex生成的结果会有问题。 说明:目前测试,包含变量,方法,namespace的脚本都可以被package require xxx 后调用。 3、添加自己的library库路径 工具有一个公共变量,执行代码时,可以直接使用 auto_path,使用: 3.1、显示默认自动可以引用的路径 #show the library of path which can be using directly.(Eg:package require xxx) puts $auto_path 3.1、在默认自动可以引用的路径中,添加自己的路径,注意用applend和/。 #add path to auto_path.Intro:the path must be splited by "/",otherwise,it can not work. lappend auto_path "D:/Tcl/lib" puts $auto_path 其他说明: 1、非TCL工具里的指令,只能在交互界面里执行(如:dir、ping等系统自带的指令),如果不希望交互里能执行非工具里的指令,可以定义变量set auto_noexec 0(可以设置成任何值),此时下发dir会报错,不识别。恢复:unset auto_noexec,之后输入dir就可以看到dir以及它对应的回显。
时间: 2024-10-26 21:59:26