如何在.NET Compact Framework中使用加载和卸载本机DLL文件?

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

我在 Windows CE 上有一个 .NET Compact Framework (CF) 应用程序,它与本机的一些 DLL 文件交互,并且该应用程序有一些未知的行为和问题。

目前,我使用 [DllImport] 属性直接调用并定义一个方法:

[DllImport("mynative.dll")]
private static extern void HelloWorld(byte[] arrName);

我想尝试释放加载的库,网络研究向我展示了

LoadLibrary
FreeLibrary
。如何找到教程或示例代码?

堆栈溢出问题如何动态加载和卸载本机DLL文件?是一个桌面示例,但是对于Compact Framework如何做到这一点? 请注意,.NET Compact Framework 没有

Marshal.GetFunctionPointerForDelegate
方法。

.net dll compact-framework
1个回答
1
投票

CF 运行时本身为 P/Invokes 调用 LoadLibrary - 它为您使用的 DLL 的每个不同“版本”调用它(因此,如果您在一个地方使用“mynative.dll”,而在另一个地方仅使用“mydll”,则会得到打了两次电话)。

从该调用返回的句柄不会也不应该暴露给应用程序。除了关闭应用程序之外,没有办法让运行时调用该 DLL 上的 FreeLibrary,因此无法释放它。

不过,我必须同意@Cody Gray 对这个问题的评论,因为即使它确实有效,也无法解决问题。您需要实际找到并修复导致您所看到的不良行为的错误。

© www.soinside.com 2019 - 2024. All rights reserved.