簡體   English   中英

什么是使用TCL / TK8.4編譯c ++應用程序以便可以在具有TCL / TK8.5的系統上運行的正確方法是什么?

[英]What is the correct method for compiling a c++ application with TCL/TK8.4 so that it can be run on a system with TCL/TK8.5?

我有一個C ++應用程序,可作為TCL / TK的解釋器。 tms是根據TCL / TK8.4編譯的。

我需要在僅安裝了TCL / TK8.5的環境中運行此程序。

在TCL / TK8.5系統上運行應用程序時,出現以下錯誤:

tms: error while loading shared libraries: libtk8.4.so: cannot open shared object file: No such file or directory

tms在Linux機器上使用g ++以及-ltcl8.4和-ltk8.4標志進行編譯。

如果將應用程序鏈接到8.4庫,則必須具有8.4個共享對象才能運行該應用程序。 您應該將可執行文件以及所有必需的tcl庫和腳本作為軟件包提供。

話雖如此-實際上有可能做您正在談論的事情。 用於允許將Tcl擴展名加載到tcl的高版本中的存根機制可以擴展到可在托管Tcl解釋器的可執行文件中使用,而不是對其進行編譯。 請參閱tcl Wiki以獲得更詳細的討論,但是您可以安排動態地加載Tcl共享庫並使用存根機制對其進行初始化。 該頁面上有一個示例。 但是,這樣做可能會導致安裝的Tcl版本缺少您的應用程序期望的問題。 如果您堅持將Tcl嵌入應用程序的標准路徑以及所有需要的Tcl文件,則可以將應用程序與系統特定的版本隔離。

另一種可能性是將您的應用程序鏈接到一個DLL /共享庫,該庫包括一個包含所有支持的Tcl腳本的虛擬文件系統。 最初稱為stardll ,也稱為basekit dll。 這樣就可以將可執行文件鏈接到一個包含所有Tcl相關信息的dll / .so。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM