2009-12-22 2 views
1

Это, вероятно, вопрос новичков, поскольку я только начал использовать pp. Я прочитал документацию по CPAN и попытался создать исполняемый файл для своего приложения. Я использую Camelbox и Tk в Windows XP, PAR :: Packager версии 0.991 (PAR версии 0.994). Чтобы убедиться, что работает pp, я создал очень простой файл hello_world.pl с использованием Tk, скомпилировал его в .exe и запустил. Все идет нормально.Почему приложение Perl PAR немедленно умирает?

Когда я использую pp -o out.exe my_program.pl в своем приложении и пытаюсь запустить out.exe, появляется окно консоли и вскоре после штампа без сообщения об ошибке. Проблема в том, что я не знаю, с чего начать искать решение, так как нет сообщения. Я попытался сделать то же самое, используя tkpp (gui для pp), так как он записывает файл журнала, но эффект тот же, и файл журнала пуст. Может кто-нибудь, пожалуйста, помогите мне?

ответ

2
  1. Обновление модуля :: ScanDeps до последней версии (или 0,95) и повторить попытку

  2. Выполнить вы программируете из окна командной строки консоли, скопируйте сообщение об ошибке и отправить его в PAR mailing list или PAR::Packer bug tracker

+0

Благодарим вас за ответ. CPAN сообщает мне, что модуль :: ScanDeps обновлен. Но ваш второй намек, наконец, дает мне сообщение об ошибке, которое я искал. Один из моих собственных модулей не был включен в исполняемый файл. Должен ли я отдельно указывать каждый модуль? Я «использую» их, и они находятся в том же каталоге, что и программа, которую я пытаюсь упаковать. –

+0

Вы должны быть выбраны автоматически, если вы используете «использовать» или «требовать» без переменной. Если вы используете что-то вроде «eval», используйте $ var «», вам нужно добавить модуль с «-M». В общем, трудно сказать, не видя источников. –

+0

Александр, я понимаю, в чем проблема. Я использую CPANs FindBin для обнаружения локального каталога и «использую lib» путь, который он создает. Это похоже на использование «use $ var» - спасибо! –

1

Если вы не ошиблись, то откуда вы узнали, что он умирает?

Возможно, ваша программа работает нормально, но окно консоли закрывается, прежде чем вы сможете увидеть результат.

Возможно, попробуйте сделать паузу после печати привет мир?

print "Hello, World!"; 
<>; # pause for input 
+0

Благодарим за предложение. Используя крошечную программу hello world, она ждет ввода, запускает и останавливает без ошибок. Однако у моего приложения есть Tk gui, который открывает диалоговое окно. Когда он упакован с pp, он ничего не делает. По крайней мере, теперь я знаю, что отображается сообщение об ошибке - консоль закрывается слишком быстро, чтобы ее прочитать. Как я могу предотвратить закрытие консоли? –

+0

@Nele Kosog: запустите программу из командной строки (вместо двойного щелчка по ней из проводника). –

+0

Спасибо, Майкл - иногда это так очевидно, я просто скучаю по нему. –