3

我在 Linux 上使用 gtk2hs 编写了一个小应用程序,效果很好。后来我尝试在 Windows(xp,7)上运行相同的应用程序,但没有成功。我安装了:

  1. haskell 取胜平台
  2. gtk2hs 全部在一个包中,路径中没有空格,并将 %PATH% 设置为其 /bin 文件夹
  3. 阴谋集团安装 gtk2hs-buildtools
  4. 阴谋集团安装gtk
  5. ghc --make -O2 Main.hs

一切都可以编译和链接。当尝试运行该应用程序时,它说:

c:\wordtrend>Main
(Main.exe:3228): GLib-GObject-CRITICAL **: gtype.c:2708: You forgot to call g_ty
pe_init()
(Main.exe:3228): GLib-GObject-CRITICAL **: gtype.c:2708: You forgot to call g_ty
pe_init()
(Main.exe:3228): GLib-GObject-CRITICAL **: g_type_interface_add_prerequisite: as
sertion `G_TYPE_IS_INTERFACE (interface_type)' failed
(Main.exe:3228): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertio
n `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed
(Main.exe:3228): GLib-GObject-CRITICAL **: gtype.c:2708: You forgot to call g_ty
pe_init()
(Main.exe:3228): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertio
n `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed
(Main.exe:3228): GLib-GObject-CRITICAL **: gtype.c:2708: You forgot to call g_ty
pe_init()
(Main.exe:3228): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertio
n `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed
(Main.exe:3228): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OB
JECT (object_type)' failed
Segmentation fault/access violation in generated code

我不知道从哪里开始。

4

1 回答 1

0

已解决:因此在 Windows 上的 gtk2hs:initGUI 函数之前似乎必须没有命令。

下面的代码在 Linux 上工作,但在 Windows 上编译和 chrases:

main :: IO ()
main = do
  someCommand  -- this command must come after initGUI to run
  initGUI
  ...
  mainGUI

所以不要在 initGUI 命令之前放置任何命令。

于 2013-06-28T08:35:01.383 回答