Почему не запускается мое приложение wxPerl для Windows?

Я разработал приложение с Strawberry Perl 5.8.9.4 с помощью wxPerl, Приложение компилируется с использованием:

wxpar -f Крипто -F Крипто -M Фильтр::Crypto::Decrypt --compress=9 --gui --icon=icon.ico --lib=./lib --module=App::Order --module=Wx --module=App::GUI::Main --module=App::GUI::Frame --module=App::GUI::Forms:: Настройки --module = App:: GUI:: Forms:: Настройки:: Подпись --module=App::Task::StripAndMail --module=App::Mode::Terminal --module=App::Mode::GUI --output="bin\PDF Mailer.exe" "PDF Mailer.pl"`.

Я дошел до того, что развернул его на ПК клиентов. Для этого я использую установку, созданную с помощью InnoSetup, которая копирует все необходимые библиотеки DLL в папку system32. Я проверил это самостоятельно и в другой системе, в которой не установлен Strawberry Perl. Эта другая система заставила меня выяснить, какие DLL мне нужно включить, а именно:

  • libeay32.dll
  • MINGWM10.DLL
  • wxbase28u_gcc_wxp_binary_10_0.dll
  • wxmsw28u_adv_gcc_wxp_binary_10_0.dll
  • wxmsw28u_core_gcc_wxp_binary_10_0.dll

Тем не менее, мой клиент установил установку, и при запуске приложения курсор просто меняется на индикатор загрузки и впоследствии возвращается в нормальное состояние. Приложение не запускается должным образом и не сообщает об отсутствующей DLL.

У меня была такая же проблема раньше, когда mingwm10.dll скучал. Так что я думаю, что это недостающая DLL, но я понятия не имею, где искать.

Я изменил PATH в моей системе, включив в него только папку system32, чтобы приложение запускалось с библиотеками DLL, содержащимися в папках приложения. Я также удалил все библиотеки DLL, которые не были установлены моей установкой, из папки system32.

Моя машина для разработки работает под управлением Windows XP Prof. SP3. Система клиента работает под управлением Windows XP Home SP3.

Любые мысли или указатели будут высоко ценится.

1 ответ

Решение

Я нашел свою проблему. На самом деле это ошибка в Strawberry Perl, о которой уже сообщалось здесь. Я решил скомпилировать его без --gui, --compress флаги и криптофильтр. Потому что я не учел --gui это вернуло бы мне сообщение об ошибке к консоли. Ошибка упоминается, что PAR::Heavy не может быть найден Согласно сообщению, на которое я ссылался ранее, это произошло из-за пути, по которому находится PAR::Heavy. Итак, я добавил --lib=C:/strawberry/perl/vendor/lib на wxpar, перекомпилирован и все работает как положено снова. Пока эта ошибка не будет исправлена, это должно сработать.

Другие вопросы по тегам