将tcl文件转换为exe失败

时间:2017-11-22 07:35:12

标签: dll tcl exe

我尝试使用FREEWRAP.EXE将tcl文件转换为exe文件。 它适用于大多数文件,但有一个文件包含一行代码"加载TLTcl.dll"这将永远失败。

当我使用activetcl运行tcl文件时,它很好。 由于我将tcl文件转换为exe文件并将TLTcl.dll与其放在同一文件夹中,因此执行时exe总是崩溃。

我想知道在将tcl转换为exe时如何在tcl文件中加载dll文件。 非常感谢!

MessageType

1 个答案:

答案 0 :(得分:0)

听起来TLTcl.dll没有使用存根支持构建,这意味着它链接到真正的tcl.dll(可能在名称中有版本号),而freewrap不使用它;它使用静态链接的构建,以便整个系统可以是一个简单的可再发行文件。

您需要在启用了存根支持的情况下重建TLTcl.dll(假设它是一个实现Tcl扩展的DLL)。这通常不太困难,因为在编译所有文件时定义USE_TCL_STUBS预处理器符号,并链接到tclstub静态库;它可能具有嵌入在文件名中的版本号(以及您编译的Tcl标题的版本以及与链接的存根库必须匹配)。请注意,它是Tcl API的一个属性,如果您针对Tcl 8.5存根API构建,则可以将其加载到Tcl 8.6解释器中。 (实际上,这种前向兼容性水平从大约8.0.6 到8.7,仍在积极开发中,所以你还没有使用它。)

这是一个仅发布给少数商业合作伙伴的版本。其他人都使用了较新的支持的版本。