2

我已经编译了使用 wxHaskell 库的 haskell 程序,现在我想知道如何让它在没有安装 wxHaskell 的其他机器上运行。当然我可以看到错误,我可以复制输出中写入的 dll 并将它们复制到那台机器,但什么是专业解决方案,我可以编写任何安装程序或类似的东西吗?

感谢帮助

4

2 回答 2

2

您将需要完全静态链接您的可执行文件。如何做到这一点因系统而异,但通常涉及将 -static 标志传递给 GHC,并将 -optl-static 传递给链接器。

于 2010-05-05T02:00:43.953 回答
0

如果你使用最近的 cabalized wxHaskell 实现,这很容易,因为几乎所有东西都是静态链接的。

我使用 InnoSetup,它是开源的,效果很好。我的脚本至少需要以下内容:

AppName=My Wonderful Application
AppVerName=My Wonderful Application 0.1.13
CreateAppDir=yes
DefaultDirName={pf}\MyWonderfulApplication

[Files]
Source: "path\to\your\wxWidgets.dll"
Source: "path\to\msvcrt.dll"
Source: "path\to\your\application.exe"

除 DefaultDirName 之外的所有路径都是您的开发机器上的路径。

关键项是您的 wxWidgets DLL(可能是多个 DLL,具体取决于您构建 wxWidgets 的方式 - 我推荐并使用整体选项,它创建单个 DLL,wxmsw28u_gcc_custom.dll)和您的应用程序二进制文件。

如果您要链接到任何其他库,您也将需要它们。Windows 上的许多第 3 方库都需要 msvcrt.dll,这就是我提到它的原因。

于 2010-05-24T13:11:21.233 回答