繁体   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