gpt4 book ai didi

c++ - 使用 TCL/TK8.4 编译 c++ 应用程序以便它可以在 TCL/TK8.5 系统上运行的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-28 07:02:52 25 4
gpt4 key购买 nike

我有一个 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 使用 g++ 和 -ltcl8.4 和 -ltk8.4 标志在 Linux 机器上编译。

最佳答案

如果您将应用程序链接到 8.4 库,则必须存在 8.4 共享对象才能运行该应用程序。您应该将您的可执行文件加上所有必要的 tcl 库和脚本打包。

话虽如此——实际上可以按照您所说的去做。 stub 机制用于允许 Tcl 扩展被加载到比它们被编译时更高版本的 tcl 中,可以扩展到在托管 Tcl 解释器的可执行文件中使用。参见 the tcl wiki有关更详细的讨论,但您可以安排动态加载 Tcl 共享库并使用 stub 机制对其进行初始化。该页面上有一个示例。但是,这样做可能会导致安装的 Tcl 版本缺少您的应用程序期望的内容。如果您坚持在交付应用程序的地方嵌入 Tcl 的标准路线以及所需的所有 Tcl 文件,您可以将您的应用程序与系统特定的变体隔离开来。

另一种可能性是将您的应用程序链接到一个包含虚拟文件系统的 dll/共享库,该虚拟文件系统包含所有支持的 Tcl 脚本。最初称为 stardll也作为 basekit dll。这使得将您的可执行文件链接到单个 dll/.so 成为可能,它包含所有 Tcl 相关信息。

关于c++ - 使用 TCL/TK8.4 编译 c++ 应用程序以便它可以在 TCL/TK8.5 系统上运行的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com