无法使用mono命令提示符为gtk#编译hello.cs

时间:2012-02-03 23:10:31

标签: mono

希望this会有所帮助,但会遇到不同的错误。

尝试将以下内容编译为hello.cs

using Gtk;
using System;
class Hello
{
    static void Main()
    {
        Application.Init();
        Window window = new Window("helloworld");
        window.Show();
        Application.Run();
    }
}

使用以下命令进行编译“gmcs hello.cs -pkg:gtk-sharp-2.0”

取决于命令提示符,我收到cs0006(mono cp)或cs2001(win cp),说无法找到文件 从mono cp它说无法找到元数据文件 来自win cp它说无法找到源文件

以下是一个示例:

c:\Users\Stephen Lloyd\Desktop>gmcs hello.cs -pkg:gtk-sharp-2.0
-r:C:/Program Files \(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/pango-sharp.dll \(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/atk-sharp.dll \(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/gdk-sharp.dll \(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/gtk-sharp.dll \(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/glib-sharp.dll  
error CS2001: Source file `Files' could not be found
error CS2001: Source file `\(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/pango-sharp.dll' could not be found
error CS2001: Source file `\(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/atk-sharp.dll' could not be found
error CS2001: Source file `\(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/gdk-sharp.dll' could not be found
error CS2001: Source file `\(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/gtk-sharp.dll' could not be found
error CS2001: Source file `\(x86\)/Mono-2.10.8/lib/mono/gtk-sharp-2.0/glib-sharp.dll' could not be found
Compilation failed: 6 error(s), 0 warnings

在所有情况下,引用的.dll都在该文件夹中。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

-pkg在Windows上被破坏;您需要提供个人-r[eference]:个人。有关详细信息,请参阅this answer

答案 1 :(得分:1)

作为手动输入引用的替代方法,我发现将mono安装到没有空格又名为C:\ devtools \ mono的路径,然后将... C:\ devtools \ mono \ bin添加到路径中会更容易。这个命令对我来说很成功。顺便说一句,在Windows上使用unix devtools之前我遇到过类似的问题,这也有效。

答案 2 :(得分:0)

MacOSX上有这个问题。将单声道bin目录添加到路径的解决方案为我解决了这个问题。

具体而言,         " /Library/Frameworks/Mono.framework/Versions/Current/bin" 需要走在我的道路上。

我这样做了:

export MONOPATH=/Library/Frameworks/Mono.framework/Versions/Current
export PATH=${PATH}:${MONOPATH}/bin

之后,我能够通过以下方式编译:

gmcs /t:exe /debug+ -pkg:dotnet WinFormsHello.cs 

(同样适用于gtk#etc)

答案 3 :(得分:0)

我在Windows 10上遇到了同样的问题。由于Windows支持符号链接,因为Vista,我认为这可能是一个解决方案......它对我有用。

作为管理员,我创建了从根目录到mono:

的目录符号链接
cd \  
mklink /d mono "\program files x(86)\mono"

然后,再次以管理员身份编辑了“打开Mono命令提示符”快捷方式属性:

Target: C:\Windows\SysWOW64\cmd.exe /k "C:\Mono\\bin\setmonopath.bat"  
Start In: C:\Mono  

现在当pkg-config解析mono.exe的驱动路径时,它只“看到”c:\mono并继续附加路径的其余部分以解析所需的包。

您可以从任何目录设置符号链接。为简单起见,我从root设置它。主要目的是建立一个没有空格或特殊字符的路径。