2017-04-03 14 views
1

私は、単純なPerlQtアプリを作成しようとしていますが、私は私のPerlスクリプトを起動したとき、私はこのエラーを取得:PerlQt - '定義された(@array)' を使用することはできません

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /usr/local/lib/x86_64-linux-gnu/perl/5.22.1/QtCore4.pm line 1420. 
Compilation failed in require at ./perlqt.pl line 5. 
BEGIN failed--compilation aborted at ./perlqt.pl line 5. 

コード:

#!/usr/bin/perl 

use strict; 
use warnings; 
use QtCore4; 
use QtGui4; 
use Window; 

sub main 
{ 
    my $app = Qt::Application(\@ARGV); 

    if (!Qt::SystemTrayIcon::isSystemTrayAvailable()) { 
     Qt::MessageBox::critical(0, Qt::Object::this->tr('Systray'), 
           Qt::Object::this->tr('I couldn\'t detect any system tray ' . 
              'on this system.')); 
     return 1; 
    } 
    Qt::Application::setQuitOnLastWindowClosed(0); 

    my $window = Window(); 
    $window->show(); 
    return $app->exec(); 
} 

exit main(); 

修正方法を教えてください。私は自分のコードで配列を使用しません。

+3

QtCore4.pmファイルを編集し、お勧めのchanを試してくださいge。モジュールは放置されているように見えますが、パッチは表示されません。 – toolic

+0

... 1420行に続く次の2行から 'defined'を削除してください。これらの3行は、その特定のエラーがトリガされる唯一の場所であるように見えます。 – stevieb

答えて

4

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at QtCore4.pm line 1420.

QtCore4これは意味をなさないものです。今のところ、それは "作品" noisly —しかし

@{$classinfos} =() if !defined @{$classinfos}; 
@{$signals} =() if !defined @{$signals}; 
@{$slots} =() if !defined @{$slots}; 

いえ—はQtCore4.pm

$classinfos ||= []; 
$signals ||= []; 
$slots ||= []; 

に変更する必要があります。


"SvREFCNT_inc" is not exported by the Devel::Peek module
Can't continue after import errors at QtGui4.pm line 25.

これはDevelの::かいま見のバグに表示されます。それはSvREFCNT_incをエクスポートするために使用されていましたが、ドキュメントは依然としてそれを主張していますが、もはやそれはありません。

あなたは

QtGui4.pm
use Devel::Peek qw(); 
BEGIN { *SvREFCNT_inc = \&Devel::Peek::SvREFCNT_inc; } 

use Devel::Peek qw(SvREFCNT_inc); 

を置き換えることによって、この問題を回避することができます

(注、PerlコードがSvREFCNT_incを使用する必要がありません、その使用のでハックバグではない場合)

+0

それは助けますが、別のエラーがあります:http://imgur.com/a/M6kKzなぜこのPerlモジュールはバグですか? – tomsk

+0

答えが更新されました。 – ikegami

+0

別のエラー:http://imgur.com/a/qaVeI PerlQtの問題は何ですか?あなたは私を助けました..しかし、多くのエラーがあります.PyQtが良くないと思っています。 – tomsk