bash – 如何强制F#interactive默认引用Gtk#?
发布时间:2020-12-15 22:44:08 所属栏目:安全 来源:网络整理
导读:我主要在 Linux上玩F#,并希望默认引用所有必需的GUI库(Gtk,Gdk,Atk,Glib,Pango,Cairo),以便我可以简单地使用: 打开Gtk ;; ?没有任何额外的打字. 我最好的猜测是修改fsi启动脚本,目前看起来像这样: #!/bin/sh exec /usr/bin/mono /usr/local/src/fsharp/bin
我主要在
Linux上玩F#,并希望默认引用所有必需的GUI库(Gtk,Gdk,Atk,Glib,Pango,Cairo),以便我可以简单地使用:
打开Gtk ;; #!/bin/sh exec /usr/bin/mono /usr/local/src/fsharp/bin/fsi.exe $@ 更新:脚本的工作版本,如Stephen的建议: #!/bin/sh exec /usr/bin/mono /usr/local/src/fsharp/bin/fsi.exe -r "/usr/lib/cli/atk-sharp-2.0/atk-sharp.dll" -r "/usr/lib/cli/glib-sharp-2.0/glib-sharp.dll" -r "/usr/lib/cli/gdk-sharp-2.0/gdk-sharp.dll" -r "/usr/lib/cli/gtk-sharp-2.0/gtk-sharp.dll" -r "/usr/lib/cli/pango-sharp-2.0/pango-sharp.dll" -r "/usr/lib/mono/2.0/Mono.Cairo.dll" $@ 解决方法
我写了一个小脚本,允许你使用F#Interactive的Gtk#(见下文).它引用了必要的Gtk#程序集(您可能需要修改路径),它还配置F#Interactive事件循环,以便您可以交互方式创建和显示窗口小部件(如Window).
如果你想自动获得支持,你需要运行带有参数的fsi.exe来加载脚本on start mono /…/fsi.exe –load:load-gtk.fsx(假设你保存脚本为load-gtk.fsx) [<AutoOpen>] module GtkSharp // Load some common Gtk# assemblies (from /usr/lib/mono/2.0/../gtk-sharp-2.0) #r "../gtk-sharp-2.0/gtk-sharp.dll" #r "../gtk-sharp-2.0/gdk-sharp.dll" #r "../gtk-sharp-2.0/glib-sharp.dll" #r "../gtk-sharp-2.0/atk-sharp.dll" open Gtk Application.Init() fsi.EventLoop <- { new Microsoft.FSharp.Compiler.Interactive.IEventLoop with member x.Run() = Application.Run() |> ignore; false member x.Invoke f = let res = ref None let evt = new System.Threading.AutoResetEvent(false) Application.Invoke(new System.EventHandler(fun _ _ -> res := Some(f()) evt.Set() |> ignore )) evt.WaitOne() |> ignore res.Value.Value member x.ScheduleRestart() = () } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |