2010-07-15 64 views
2

我在ubuntu上使用monodevelop創建了一個c#應用程序。它在ubuntu中運行良好。 我嘗試在windows.But中運行該應用程序(在Ubuntu中運行後創建的firstgtk.exe文件),但它顯示錯誤消息。我可以在Linux和Windows中如何進行移植?在linux和windows上運行.net(單聲道)應用程序

的錯誤信息是:

當我點擊firstgtk.exe文件,命令提示具有come.It是空白的。在同一時間微軟消息(發送錯誤報告或不發送):

firstgtk遇到問題,需要關閉。

當我點擊不發送按鈕,命令提示符和消息框消失了。

+1

請包括實際的錯誤信息作爲您的問題的一部分。 – anthony 2010-07-15 17:23:19

+0

向我們顯示錯誤消息,我們可以幫助您更好。 除此之外,我猜測...你有沒有在Windows環境中安裝Mono?您可能必須在Windows下編譯Windows版本,除非您使用的開發工具可以從Linux定位Windows。 – FrustratedWithFormsDesigner 2010-07-15 17:25:22

回答

1

如果您使用的是Gtk#,則您的應用程序可在Windows和Linux之間移植。我的猜測是,你沒有在Windows上正確安裝Gtk#(或根本就沒有安裝)。你可以從here下載。截至目前,最新版本是2.12.10

+0

謝謝,它正在工作。 我已經創建了另一個簡單的java控制檯project.While雙擊它的exe文件,相同類型的錯誤coming.Any我需要安裝? – NikRED 2010-07-17 03:58:05

+0

我打算說「好猜安東尼」,但我看到問題已更新,以提供更多信息。所以,我會說「好的答案」。 :-) – Justin 2010-07-18 17:03:07

1

你的代碼應該可以在Linux和Windows之間移植。唉, 二進制文件不是。 ...

編輯:正如評論者指出的,Mono確實會生成並使用PE可執行文件,但其他問題可能會限制可移植性。

+0

在Windows上編譯Mono之前,他不需要在Windows上安裝Mono嗎? – FrustratedWithFormsDesigner 2010-07-15 17:36:14

+1

我不認爲這是真的。單聲道產生單聲道運行時加載和執行的PE文件。我相信在兩個平臺上都可以使用相同的二進制。 – codekaizen 2010-07-15 17:36:42

+0

@codekaizen:是嗎?涼。但在那種情況下,他仍然需要Windows上的Mono平臺。他甚至不清楚他是否擁有這一點。 – FrustratedWithFormsDesigner 2010-07-15 17:45:01

3

單聲道編譯爲CIL代碼,可以完全移植到其他平臺上的.NET或Mono。我可以在Mac上編譯我的C#代碼並在Linux或Windows下運行由.NET或Mono生成的EXE。

沒有實際的錯誤信息,我們只能在這裏猜出問題。也就是說,根據我的經驗,在Linux/UNIX上用Mono編寫的應用程序在Windows上創建錯誤的最常見原因是具有平臺特定路徑分隔符或區分大小寫問題的路徑名。 Windows文件系統不區分大小寫,但它們在Linux/UNIX上。

另一種可能性是,您在一個平臺上使用Mono,並試圖在.NET上運行它。 Mono附帶一些在Windows上不存在的.NET庫。

其實,我猜最後的可能是GTK#是在單聲道上生成GUI代碼的常用方法。 GTK#依賴於存在的GTK + C庫,這在Linux上非常常見,但在Windows上不太可能,除非它已被明確安裝。

我們真的需要知道錯誤信息是什麼。

+0

現在已添加更多信息,我可以看到我最後的猜測是正確的。安東尼在上面跳出了正確的答案。 GTK#必須安裝。 – Justin 2010-07-18 17:06:57

相關問題