将 tcl 文件转换为 exe 失败

Convert a tcl file to a exe fail

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

当我用activetcl 运行 tcl 文件时,没问题。 由于我将tcl文件转换为exe文件,并把TLTcl.dll和它放在同一个文件夹中,exe总是在执行时崩溃。

我想知道在tcl转exe的时候怎么加载tcl文件中的dll文件。 非常感谢!

puts "Starting FLASH script" 
puts "FLASH write will be performed now, make sure you have an extra flash... " 
#load 10 lira tcl DLL 
load TLTcl.dll

听起来 TLTcl.dll 不是用存根支持构建的,这意味着它 link 是针对真正的 tcl.dll(名称中可能带有版本号)和 freewrap不使用那个;它使用静态 linked 构建,因此整个系统可以是一个简单的可再分发文件。

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


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