2010-04-15 45 views
1

有什麼辦法可以做到這一點?似乎唯一可行的方法是使用ruby/tk並通過該API創建一個tcl解釋器。但是,我想在沒有GUI(x窗口)的系統上使用它。我沒有選擇嗎?在紅寶石中嵌入tcl

感謝

+0

Python的Tkinter允許用戶創建Tcl解釋器的實例,該實例不加載Tk(參數'useTk'用於'Tk'的構造函數)。也許Ruby的包裝也是呢? – 2010-04-15 13:47:48

+1

爲什麼你需要嵌入它,而不是掏出來?你看過http://rubyconf2008.confreaks.com/tcl-for-rubyists.html嗎? – 2010-04-15 14:00:05

回答

0

,如果你是在命令行中,你可以掏出來tclsh的上。 TCL也有一個C API,所以你應該能夠使用它來嵌入TCL紅寶石,如果沒有預先存在的方式?

3

如果你能在Tcl的C API調用任意功能簡單,關鍵的是:

  • Tcl_FindExecutable - 調用此先初始化庫
  • Tcl_CreateInterp - 這將返回的句柄新的執行上下文
  • Tcl_Eval - 此評估腳本;返回常量TCL_OK(0)或TCL_ERROR(1)(或其他一些其是在一般的代碼罕見)
  • Tcl_GetResult - 這將返回結果值(或錯誤消息)
  • Tcl_ResetResult - 這將清除的結果值
  • Tcl_DeleteInterp - 也許你能猜到這是什麼呢?

您也可以訪問與Tcl_GetVarTcl_SetVar上下文「全局」變量;這是傳遞可能不是有效腳本的值的一種非常方便的方式。

+0

有什麼辦法可以指定tcl解釋器的路徑嗎? – Jordan 2010-04-15 17:53:22

+0

使用'mkmf.rb',您需要'have_library'或'find_library'。我幾乎不是一個足夠好的Ruby程序員來告訴你如何充分利用這個API。 – 2010-04-16 07:58:37