如果我尝试加载共享对象 TCL 文件,Python 3.x (3.9.7) 会给出以下错误。 如果我手动运行它就可以了。
手动方法:
shell> tclsh
%load blah.so
%cmd_in_blah
Python方法:
from tkinter import *
tcl = Tcl()
ret = tcl.eval("load blah.so")
此处出现错误>>>:
*** Error in `python': free(): invalid pointer: 0x00002ae034fc8d00 ***
Abort
请帮忙。预先感谢。
首先,我们需要知道两个Tcl解释器的版本是否完全相同。很容易有多个不同的版本,并且使用错误的版本可能会导致崩溃(它们不应该,但现实......) 从
package require Tcl
的结果或从 tcl_patchLevel
全局变量获取确切的版本号。
如果您将代码加载到相同版本的 Tcl 运行时中,并且还匹配了它是 32 位还是 64 位构建,那么问题肯定出在 Python 中的某个地方。我不知道这可能会做什么来拦截对动态库加载的调用。或者......库可能会检测到诸如额外的环境变量之类的东西并以某种方式改变其行为。
使用您提供的很少的信息来调试崩溃是非常困难的!