windows - 为什么我的 Windows wxPerl 应用程序没有启动?

标签 windows perl dll wxwidgets wxperl

我用 Strawberry Perl 5.8.9.4 使用 wxPerl 开发了一个应用程序。该应用程序是使用以下代码编译的:

wxpar -f Crypto -F Crypto -M Filter::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::Settings --module=App::GUI::Forms::Settings::Signature --module=App::Task::StripAndMail --module=App::Mode::Terminal --module=App::Mode::GUI --output="bin\PDF Mailer.exe" "PDF Mailer.pl"`.

我已经到了将它部署到客户 PC 的地步。为此,我使用了使用 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 启动。我还从 system32 文件夹中删除了所有由我的设置安装的 DLL。

我的开发机器运行的是 Windows XP Prof. SP3。客户端系统运行Windows XP Home SP3。

任何想法或指示将不胜感激。

最佳答案

我发现了我的问题。这实际上是 Strawberry Perl 的一个错误,已被报告 here .我决定在不使用 --gui--compress 标志和 Crypto 过滤器的情况下编译它。因为我遗漏了 --gui 它会向我返回一条错误消息到控制台。错误提到找不到 PAR::Heavy。根据我之前链接到的消息,这是因为 PAR::Heavy 所在的路径。所以我将 --lib=C:/strawberry/perl/vendor/lib 添加到 wxpar,重新编译,一切都像预期的那样工作。在修复此错误之前,这应该可以解决问题。

关于windows - 为什么我的 Windows wxPerl 应用程序没有启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2227796/

相关文章:

windows - 在 PowerShell 中查找独立于操作系统的处理器架构

xml - 使用 perl XML::LibXML 解析 XML

windows - 如何使用 Powershell wget 输出完整的网页特定内容?

windows - 如何让程序默认某个协议(protocol)的 "handler"?

performance - 给 Perl 的 print 一个列表或一个连接的字符串是否更快?

tensorflow - 无法将 tensorflow 导入我的 python 代码

c++ - 在 DLL 边界上使用 std::move 是一种好习惯吗?

c++ - 在主应用程序中声明的 dll 中实现接口(interface) - C++

windows - 用于获取屏幕区域更改的 API?

perl - Perl 的 && 的结果是什么?