我正在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)没有通过现代艺术博物馆,因为它有相当数量的P / Invokes。然而,有些人似乎说他们能够通过避免相互冲突的方法来使其运行。
但这是关键。我决定尝试通过WINE运行GUI并完全绕过Mono。由于Windows运行良好,我认为这样可以解决错误。但是,Wine中会弹出完全相同的错误消息。我甚至在Windows和我的Ubuntu live机器之间有一个共享文件夹。完全相同的可执行文件将在完美的Windows上运行,但在Linux中崩溃时出现此错误。在这一点上,经过几个小时的研究,我很难过。
是否有某种方式必须在Mono中加载dll,或者错误在于Mono / Wine与WinForms的不兼容性?
答案 0 :(得分:1)
我查看了图书馆的source。假设我找到了合适的库,它就会调用Win32 API,而这个API并不适用于Mono库存。
在Wine 下运行可以更好地工作,但Wine只是部分实现了Win32 API。
您可能需要找到跨平台的替代品。