我正在为Windows和Linux开发一个Perl多线程软件,分别使用线程和forks模块。使用指向shell的标准输出一切正常,但是,一旦我决定通过将Tk模块包含到脚本中来生成GUI,应用程序的Windows版本就可以正常工作(实际上不是很好,但输出是可以接受的),因为当我尝试在Linux上与Forks模块和启动脚本的简单按钮一起运行它时,出现了一些问题。
在下面,您可以找到与其关联的错误消息:
***.button (1):
0 0x32bef88 IV f=00000001 undef(1)
SV = IV(0x32bef78) at 0x32bef88
REFCNT = 1
FLAGS = ()
IV = 0
Prototype mismatch: sub CORE::GLOBAL::exit (;$) vs none at /usr/local/lib/perl5/site_perl/5.26.0/x86_64-linux/forks.pm line 1509.***原型不匹配可以与嵌入到Tk和Forks模块中的公共函数联系起来,但老实说,我不知道如何解决它。我一直在尝试包含'Tk‘函数的特定’fork‘,但是没有办法修复它。
提前感谢你在这个问题上的帮助。
发布于 2017-11-22 03:13:07
这是forks模块中的一个错误。这不是一个非常严重的问题,但问题出在forks模块。
perl内置exit函数应该有一个原型
$ perl -E 'say prototype "CORE::exit"'
;$forks模块sometimes tries to redefine the exit function
{
no warnings 'redefine';
*CORE::GLOBAL::exit = $old_core_global_exit;
}但它通过a subroutine that was not defined with a prototype做到了这一点
# Keep reference to pre-existing exit function
my $old_core_global_exit;
BEGIN {
$old_core_global_exit = sub { CORE::exit(@_) };
}同样,这不是一个严重的错误,但是如果您想修复它,请编辑您的forks.pm副本,以便在子定义中包含一个原型
$old_core_global_exit = sub (;$) { CORE::exit(@_) };如果你想要一个永久的修复,contact the author和做一个错误报告。
https://stackoverflow.com/questions/47409394
复制相似问题