1

我无法让 GTK# 应用程序在 Windows 上运行,如果能获得任何帮助,我将不胜感激。我尝试用谷歌搜索,但无法找到解决我的问题的方法。

我使用 GTK# 在 monodevelop 中编写了一个小应用程序,它只打开一个带有按钮的窗口。它在 linux 上运行良好。

但是我无法让它在 Windows 上运行。我尝试安装 GTK+ 和 GTK# redistributables、GTK# SDK,但它仍然无法正常工作。并且它不会显示任何抛出的异常(在命令行中),这将有助于调试问题。

调用 .exe 后,它会在那里停留几秒钟,然后 shell 重新出现,等待下一个命令,没有任何输出。

谁能告诉我我必须在原始 Windows 安装上安装什么才能运行 GTK# 应用程序?

[编辑] 我知道运行它们不需要单声道,如果可能的话,我想避免它。

4

4 回答 4

2

Mono.Posix 是 GTK# 系统的必需部分 - 它包含用于处理国际化文本的 gettext 库接口。通过在 MonoDevelop 中编写,在创建 GUI 界面时有一个允许国际化文本的选项,它会自动调用这个库作为生成的 Build 函数的一部分(它似乎在设置用户显示的文本时被调用,比如你的标题形式)。这意味着您只需要 Mono.Posix.dll 库(将在 Microsoft .NET 上工作),而不需要完整的 Mono 运行时。

于 2013-12-04T23:15:54.020 回答
1

异常可能被写入 stderr 而不是 stdout,Windows 命令行默认情况下不显示。尝试:

myapp.exe 2> my.log

并查看是否将错误写入名为 my.log 的日志文件。

于 2012-10-07T16:18:46.487 回答
1

就像你一样,我在 Windows 10 上运行时遇到了问题。在我的情况下,这个问题在另一个 Google Result 到博客中提到 Mono.Posix 引用确实是原因后得到了解决。但是,博客指出您还必须删除/转换global::Mono.Unix.Catalog.GetString(如果您使用的是 MonoDevelop 的 Stetic GUI 创建器)。这些通常会在您的标签上。

IE:

dev@laptop:/tmp/myproject$ rg "global::Mono.Unix."
96:     this.label2.LabelProp = global::Mono.Unix.Catalog.GetString("25 ROUNDS OF DEAF");

更改为

96:     this.label2.LabelProp = "25 ROUNDS OF DEAF"

由于 Stetic GUI 创建者通常将 Partial 类文件放在项目目录的子文件夹 gtk-gui 中。这可能是检查流浪者的最佳地点。虽然ripgrep(在rg那里使用的命令对所有子文件夹进行递归快速目录搜索,所以不妨使用它)

在此之后,您必须安装适用于 .NET 的 GTKSharp 运行时(截至今天,它是来自 mono-project.com 的 GTK+ 也称为 GTK2 的文件 gtk-sharp-2.12.45.msi。GTK3 是不同的,对于未来的 Google 员工可能会有所不同)

之后在 MonoDevelop 中重新编译应用程序,您可以在 Windows 上运行它

步骤来源:https ://www.martyndavis.com/?p=432

于 2020-01-02T23:21:56.560 回答
0

实际上,应用程序可以在 Windows 上不使用 Mono(例如控制台应用程序)运行,但是如果您在代码中引用了 Mono.Posix,它可以使用一些无法在 Windows 上执行的特定于平台的功能。在 MonoDevelop 中的 Windows 上,您可以在框架(Mono 或 MS.Net)之间进行选择。尝试在 Win 上重新编译应用程序并选择 MS.Net 框架。

于 2012-10-08T18:04:30.440 回答