Mono Gtk#无法编译初学者教程

时间:2015-11-08 05:43:39

标签: c# windows mono gtk#

我试图让Mono和Gtk#在Windows上运行。

当我尝试运行mcs hello.cs -r:“C:\ Program Files(x86)\ Mono \ lib \ gtk-sharp-2.0 \ gtk-sharp.dll”

我收到以下错误:

hello.cs(11,9):错误CS0012:类型Atk.Implementor' is defined in an assemb ly that is not referenced. Consider adding a reference to assembly atk-sharp,V ersion = 2.12.0.0,Culture = neutral,PublicKeyToken = 35e10195dab3c99f'C:\ Program Files( x86)\ Mono \ lib \ gtk-sharp-2.0 \ gtk-sharp.dll(与先前错误相关的sym bol的位置)hello.cs(11,9):错误CS0012:类型GLib.IWrapper' is defined in an assembly that is not referenced. Consider adding a reference to assembly glib- sharp,Ve rsion = 2.12.0.0,Culture = neutral,PublicKeyToken = 35e10195dab3c99f'C:\ Program Files(x86)\ Mono \ lib \ gtk-sharp-2.0 \ gtk-sharp.dll(sym bol的位置与之前相关错误)编译失败:2个错误,0个警告

这是我的hello.cs:

using Gtk;
using System;

class Hello
{
    static void Main ()
    {
        Application.Init ();

        Window window = new Window ("Hello Mono World");
        window.Show ();

        Application.Run ();
    }
}

当我尝试运行时:(如教程所示)我收到以下错误:

在pkg-config搜索路径中找不到包gtk-sharp.2.0。也许您应该将包含`gtk-sharp.2.0.pc'的目录添加到PKG_CONFIG_PATH环境变量中没有包'gtk-sharp.2.0'发现错误CS8027:运行pkg-config时出错。检查上面的输出。

我在网上找不到任何东西,有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

好的,问题似乎是mcs命令行选项-pkg:gtk-sharp-2.0在Windows下不能正常工作,在Ubuntu下工作正常。

在pkg-config路径中有所需的文件gtk-sharp-2.0.pc,如果我运行pkg-configure,它也会找到gtk-sharp软件包。

如果有人知道如何在Windows中修复此问题,那就太好了。

对于遇到与我相同问题的所有人,请通过-r选项将所有需要的dll添加到mcs:

mcs hello.cs -r:"C:\Program Files (x86)\Mono\lib\gtk-sharp-2.0
\gtk-sharp.dll" -r:"C:\Program Files (x86)\Mono\lib\gtk-sharp-2.0\atk-sharp.dll"
 -r:"C:\Program Files (x86)\Mono\lib\gtk-sharp-2.0\glib-sharp.dll"

答案 1 :(得分:2)

这个也有困难。 似乎pkg-config知道包。 如果我运行"C:\Program Files (x86)\Mono\bin\pkg-config.exe" --list-all 它返回一个列表,在那里我可以看到gtk-sharp-2.0。

我发现的一件事是,如果你问是否找到了包,那么pkg-config的windows版本不会只返回0或1。

正在运行

"C:\Program Files (x86)\Mono\bin\pkg-config.exe" --exists gtk-sharp-2.0

返回注意,但当你看到%ERRORLEVEL%时,它是正确的 所以正在运行

echo %ERRORLEVEL%

返回正确的值“0”。

因此,Windows上的msc实现可能存在一些困难。