我正在用C#编写并希望使用tcl。
搜索后,我找到了Tcl/Csharp项目,但是缺少一个允许它与注册表一起工作的软件包。我有一个dll文件形式的包,但我无法加载它。
class Program
{
static void Main(string[] args)
{
Interp interp = new Interp();
interp.eval("puts hello world"); // Works
interp.eval("load tclreg12.dll"); // Throws TclException Invalid command name "load"
interp.eval("package req registry"); // Throws TclException "cant find package registry"
TclObject result = interp.getResult();
Console.WriteLine(result);
interp.dispose();
}
}
我该如何使用这个包?
答案 0 :(得分:2)
正如M.Babcock正确指出的那样,你正在使用的Tcl / Csharp包只是尝试在.NET堆栈之上实现一个Tcl解释器,但load
命令非常特殊,因为它(在“真正的”Tcl中)旨在加载用C,和编写的Tcl包,这些包应该使用C API exposed by the Tcl runtime本身。这个C API非常全面,当然,如果可能的话,使纯CSS代码正确地模拟所有C API的东西将是一项巨大的任务。
由于Windows注册表操作在.NET中很简单,我想你有一个用Tcl编写的大型遗留程序,你需要从你的.NET程序中调用它(因为你可能估计移植该程序会更多)麻烦而不是让它按原样运行)。如果这是真的,我会选择其中一条路线: