【发布时间】:2023-03-21 05:01:02
【问题描述】:
我正在 WinForms 中创建一个小型 GUI,目前正在实现语法高亮。我发现了一个在 Windows 中运行良好并提供 dll 供使用的库。但是,该库似乎总是在 Linux 中崩溃。这是我得到的错误:
Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object
at FastColoredTextBoxNS.FastColoredTextBox..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) FastColoredTextBoxNS.FastColoredTextBox:.ctor ()
at FDE.FGUI..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) FDE.FGUI:.ctor ()
at FDE.FGUI.Main () [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
at FastColoredTextBoxNS.FastColoredTextBox..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) FastColoredTextBoxNS.FastColoredTextBox:.ctor ()
at FDE.FGUI..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) FDE.FGUI:.ctor ()
at FDE.FGUI.Main () [0x00000] in <filename unknown>:0
从错误消息来看,Mono 似乎没有看到在构造函数期间出现<filename unknown> 错误的 dll。不可否认,我使用的图书馆 (FastColoredTextBox) 没有通过 MoMA,因为它有相当数量的 P/Invokes。但是,有些人似乎说他们能够通过避免冲突的方法来运行它。
这是关键。我决定尝试通过 WINE 运行 GUI 并完全绕过 Mono。由于它在 Windows 上运行良好,我认为这可以修复错误。但是,在 Wine 中会弹出完全相同的错误消息。我什至在 Windows 和我的 Ubuntu live 机器之间有一个共享文件夹。完全相同的可执行文件将在完美的 Windows 上运行,但在 Linux 中会因此错误而崩溃。在这一点上,经过数小时的研究,我被难住了。
是否有某种方式必须在 Mono 中加载 dll,或者错误在于 Mono/Wine 与 WinForms 不兼容?
【问题讨论】:
标签: c# linux winforms mono wine