WinForms 组件在 Mono 中的 LoadLibrary 本机调用时崩溃

问题描述 投票:0回答:0

我们有一个 WinForms 组件,我们的一位客户已在 Mono 中成功使用了好几个月。看来,该组件在当前使用的 Mono 版本中停止工作(运行时是 Mono 5,在 Ubuntu Linux 14 LTS 上运行)。

组件抛出异常,这里是对应栈顶:

$ mono bin/Debug/ALMAViewer.exe
SendMessage (48234666, 0xd2, (nil), (nil))
SendMessage (48234668, 0xd2, (nil), (nil))
System.EntryPointNotFoundException: LoadLibraryA
  at (wrapper managed-to-native) ComponentNamespace.NativeMethods:LoadLibrary (string)

我不是 Mono 的高手,但如果我对这个日志的理解正确,Mono 无法加载定义如下的 WinAPI LoadLibrary 函数:

[DllImport("kernel32.dll", EntryPoint = "LoadLibraryA")]
public static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string lpFileName);

有人告诉我为什么这段代码在 Mono 中停止工作以及如何解决这个问题吗?看起来这个平台不再支持 ANSI API 调用,我们只需要使用 Unicode 版本的 WinAPI 函数。

.net winforms winapi mono loadlibrary
© www.soinside.com 2019 - 2024. All rights reserved.