Почему не запускается мое приложение 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, перекомпилирован и все работает как положено снова. Пока эта ошибка не будет исправлена, это должно сработать.