我對tcl非常陌生。如何在tcl中的加載命令上使用interp arg?
我想加載一個DLL使用加載命令,但我得到一個未定義的符號錯誤。
我很確定這個消息暗示dll是針對特定的(專有)解釋器的。
如果我嘗試從「希望」執行加載,則會出現錯誤,但如果我從專有解釋器執行加載,則加載正常。
我看到在load命令中,我可以傳入packageName和interp。 我在想,如果我通過專有解釋器,我可能能夠得到這個工作,但如果我傳遞給解釋器的路徑,我會收到一條錯誤消息,說它不能解釋解釋器。 有人知道interp =期待什麼嗎?
順便說一句,我不能只使用專有的解釋器,因爲我真的只是試圖從ruby調用tcl命令,而我沒有頭文件來編譯ruby與該解釋器。
該命令,我收到一條錯誤消息,說有和未定義的符號。
如果你想要一個相當典型的初始化函數來看,[TDBC包的一個](http://core.tcl.tk/tdbc/artifact/5e875b2fe4177fa040f2c6330b7d3d0ae5e33c71?ln=194-223)是非常合理的。它調用'Tcl_InitStubs'(獲得API/ABI訪問),用'Tcl_CreateObjCommand'註冊一些命令,然後調用'Tcl_PkgProvideEx'來標記包是否存在。 –
謝謝,我也在嘗試swig方法,但我遇到了問題以及看到:http://stackoverflow.com/questions/20587374/make-fails-on-swig-create-ruby-wrapper – nPn
@nPn :我自己並不使用SWIG方法,但是當連接C++(而不是C)時,您最好手工編寫包裝器。當然,它的難度取決於細節,但要記住的關鍵是Tcl是作爲C庫實現的,所有回調函數都必須是函數(_not_方法或不直接),並且具有C鏈接。 –