关于在linux上运行dll的建议



我是新手,对Linux有一点了解。话虽如此,让我总结一下我的问题。我有一个用winforms编写的大型应用程序,我希望它能在ubuntu上运行。我使用了mono,但在运行mono迁移分析器后,P/invoke没有迁移,所以我使用wine来运行应用程序。

对于wine,应用程序中的大部分部分运行良好,但在许多情况下会崩溃,性能也很慢。我将消息发送到他们的论坛,但它没有得到解决,如所示

wine之后,我试图看看在ubuntu上运行应用程序的可能平台。其中一个使用Avalonia UI作为前端,C#代码将被重用。因此,我创建了一个原型来查看应用程序是否崩溃或引发任何异常。它显示了DLLNotFoundException,该异常在联系AvaloniaUI支持人员后指出,dll仅在windows平台上工作,如所示

现在我找到了解决方案,但大多数人告诉我使用wine或mono,一些旧的解决方案告诉我使用gcc,如这里和这里所示,但gcc只编译c和c++。

有人能指导我在这里做什么吗。

我已经查看了您评论的屏幕截图。

您的问题与Avalonia无关,因为Avalonia是UI框架,并且您正在调用Networking例程,例如NetApiBufferFree(IntPtr-buf(。

我想,你可能需要寻找一个问题的答案";如何以跨平台的方式列出本地网络中的所有计算机;。

我认为您可能需要将您的解决方案拆分为单独的项目:

第一个是接口,它的目标是一个应用程序,

第二个应该包含Windows的逻辑,代码如下:https://morgantechspace.com/2014/04/get-list-of-network-computer-names-in-c-sharp.html#Get-网络PC名称;

第三个可能包含您对Linux特定例程的调用;在那里,您应该检查如何在C#上调用Linux系统例程。关于这个主题的信息较少,但我从这里开始:用C获取局域网上的设备列表。

第一个项目应该依赖于第二个和第三个。

显然,您的解决方案应该以.NET Core为目标;或单声道。

最新更新