【问题标题】:Newbie Question: GTK# (Mono) on OSX新手问题:OSX 上的 GTK# (Mono)
【发布时间】:2009-08-02 21:37:42
【问题描述】:

我正在使用我的first steps(或者可能是我的最后一步)在 OSX 的 Mono 上使用 GTK#。我写了一个 .cs 文件,然后尝试用 mono 编译:

gmcs -pkg:gtk-sharp-2.0 one.cs

这会导致这条消息

error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs gtk-sharp-2.0', CurrentDirectory=''

显然,这需要我知道自己在做什么。我知道

MacOS X 的 Mono 安装程序来了 使用 Gtk+ 和 Gtk# 所以你可以开始 构建和运行跨平台 GUI Gtk# 应用程序包括 OSX。”

所以没有什么要安装的。

我确实在这里找到了 GTK2

/opt/local/var/macports/sources/rsync.macports.org/release/ports/x11/gtk2/

这肯定是由 Mono 安装安装的。

Gmcs 版本为 2.4.2.2。

编辑: Miguel 说我遇到了一些奇怪的事情。

我已按照 Macports 说明删除了所有 Macports。我已经从 .dmg 重新安装了 Mono。这是我目前的路径

export PATH=/opt/subversion:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin

但即使只使用 /usr/bin 仍然无法避免错误。

所有 Mono 的东西都在它应该在的地方,包括 /Library/Frameworks/Mono.framework/Versions/Current 中的所有东西。 但是:奇怪的是

/Library/Frameworks/Mono.framework/Versions/2.4.2.2/lib/gtk-sharp-2.0/ 

为空。但是 MonoDevelop 可以运行,但不知道 Gtk(我已经包含了它知道的所有参考资料)......

【问题讨论】:

    标签: macos mono gtk#


    【解决方案1】:

    快速而肮脏的解决方案:

    cd /usr/local/bin
    sudo ln -s /Library/Frameworks/Mono.framework/Commands/pkg-config ./pkg-config
    

    现在你的 gmcs -pkg:... 命令可以工作了。

    背景:我在新 Mac 和全新安装的 Mono 上遇到了这个问题。让我挠了几天头,直到我仔细查看了错误消息:

    error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs gtk-sharp-2.0', CurrentDirectory=''
    

    它说它无法运行程序,所以我做了一个

    which pkg-config
    

    那是空白的,所以我认为它可能无法运行它,因为它不在路径中。结果就是这样。

    【讨论】:

    • 谢谢亚瓦尔。我暂时将其标记为最佳答案,在下个月(2009 年 12 月)我会试一试,看看它是否适合我。问题是我几个月没碰过这些东西(一直在使用纯 Winforms)。当然看起来不错。
    • 另一个(更好的?)选项是将 mono bin 目录添加到您的路径中。 export PATH=${PATH}:/Library/Frameworks/Mono.framework/Versions/Current/bin
    • @Cheeso - 当然,这应该可以正常工作。我认为是偏好问题。
    【解决方案2】:

    你有一个混合设置。

    /opt/local/var/macports 中的 Gtk 不是来自 Mono 的 OSX 安装程序,您可能更早从 macports 获得它。 Mono 安装程序将其文件放在 /Library/Frameworks/Mono.framework/ 下

    很有可能,您的路径上还有其他内容,因为在我从 Mono 网站安装 Mono.Framework 后,它开箱即用(使用上面的命令行示例)。

    【讨论】:

    • 谢谢 Miguel,如果我解决了这个问题或有其他问题,我会回来报告。 (+1 para vos, por supuesto)
    • 抱歉,您是指 echo $PATH 中的“路径”还是...我应该查看什么环境变量?
    • Miguel,我在你的 cmets 之后再次编辑了这个问题,如果你有机会看看的话。
    【解决方案3】:

    使用 MonoDevelop 可能会使事情变得更容易,但这是它在编译时引用 gtk# 的方式(注意它直接从 GAC 引用程序集):

    gmcs test.cs -r:/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/gtk-sharp/2.12.0.0__35e10195dab3c99f/gtk-sharp.dll

    您通常还需要包含对 gdk-sharp 和 pango-sharp 和 glib-sharp 的引用,顺便说一句。

    请注意路径中的框架版本是“当前”,这使得命令更具前瞻性。

    【讨论】:

    • 谢谢你,桑迪,祝你好运。我很快就会检查出来,尽管随着整个事情的发展,我最喜欢的 Mono 策略(等待)似乎是一个不错的策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    相关资源
    最近更新 更多