Python 3.x 无法通过 tkinter 在 TCL 中加载 .so 文件

问题描述 投票:0回答:1

如果我尝试加载共享对象 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

请帮忙。预先感谢。

python tkinter tcl load .so
1个回答
0
投票

首先,我们需要知道两个Tcl解释器的版本是否完全相同。很容易有多个不同的版本,并且使用错误的版本可能会导致崩溃(它们不应该,但现实......) 从

package require Tcl
的结果或从
tcl_patchLevel
全局变量获取确切的版本号。

如果您将代码加载到相同版本的 Tcl 运行时中,并且还匹配了它是 32 位还是 64 位构建,那么问题肯定出在 Python 中的某个地方。我不知道这可能会做什么来拦截对动态库加载的调用。或者......库可能会检测到诸如额外的环境变量之类的东西并以某种方式改变其行为。

使用您提供的很少的信息来调试崩溃是非常困难的!

© www.soinside.com 2019 - 2024. All rights reserved.