我想移植用C#编写的应用程序。 NET(在Windows上运行)在linux中。我认为第一个使用Mono的解决方案。我尝试使用Mono Migration Analyzer MoMa,错误是平台调用。应用程序调用Win32 Native Function,如kerne32.dll,我想知道Linux中是否有任何等价物;任何可以实现相同内容的共享库。
我看到有关此主题的单声道文档: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?
但我没有找到答案。
PS:请原谅我的英语。答案 0 :(得分:0)
如果您的Windows应用程序直接调用系统API,则不会直接转换为Linux。 Windows上的系统库与Linux上的系统库完全不同。显然,有大量的常见功能和功能,但它们都以不同的方式暴露,每个平台都有定制。
您将需要深入了解当前代码并找出如何翻译它。最好的情况是采用现有代码并将其转换为使用.net框架功能。如果您可以为所有系统p / invokes执行此操作,那么您有机会在两个平台之间共享更多代码。这种方式允许您将.net框架推入管理平台之间差异的任务。如果您不能使用.net框架,并且必须求助于p / invokes,那么您将需要为每个平台定制代码。