2016-09-29 33 views
-1

我想移植一個用C#編寫的應用程序。 NET(在Windows上運行)在Linux中。我認爲的第一個解決方案是使用Mono。我嘗試使用Mono Migration Analyzer MoMa,錯誤是平臺調用。應用程序調用像kerne32.dll一樣的Win32 Native函數,我想知道在Linux中是否有任何等價物;任何可以實現相同內容的共享庫。natvie windows DLL和Shared Linux庫之間是否有任何等價關係.SO

我看單文檔中關於這個話題:http://www.mono-project.com/docs/advanced/pinvoke/

我還要檢查這些問題:

How to write programs in C# .NET, to run them on Linux/Wine/Mono?

What would be the equivalent of Win32 API in linux?

但我沒有找到我的answere。

PS:請原諒我的英語。

回答

0

如果您的Windows應用程序直接調用系統API,那麼將不會直接轉換爲Linux。 Windows上的系統庫與Linux上的系統庫完全不同。顯然,有大量的通用功能和能力,但它們都以不同的方式暴露出來,定製於每個平臺。

您將需要深入研究當前的代碼並研究如何翻譯它。最好的情況是採取現有代碼並將其轉換爲使用.net框架功能。如果你可以爲所有的系統p /調用,那麼你就有機會在兩個平臺之間共享更多的代碼。通過這種方式,您可以將.net框架推向管理平臺之間差異的任務。如果你不能使用.net框架,並且不得不求助於p/invokes,那麼你將需要爲每個平臺定製代碼。

相關問題