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

时间:2011-08-14 12:11:12

标签: .net api dll compact-framework

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

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

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

我想尝试发布已加载的库,网络研究向我显示LoadLibraryFreeLibrary。我如何找到教程或示例代码?

Stack Overflow问题 How to dynamically load and unload a native DLL file? 是一个桌面示例,但它如何为Compact Framework完成? 请注意,.NET Compact Framework没有'Marshal.GetFunctionPointerForDelegate'方法。

1 个答案:

答案 0 :(得分:1)

CF运行时本身为P / Invokes调用LoadLibrary - 它为你使用的DLL的每个不同“版本”调用它(所以如果你在一个地方使用“mynative.dll”而在另一个地方使用“mydll”,那么会被叫两次)。

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

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