我在.NET Compact Framework上有一个Windows CE(CF)应用程序,它与本机的某些DLL文件进行交互,并且该应用程序有一些未知的行为和问题。
目前,我正在使用[DllImport]属性直接调用并定义方法:
[DllImport("mynative.dll")]
private static extern void HelloWorld(byte[] arrName);
我想尝试发布已加载的库,网络研究向我显示LoadLibrary
和FreeLibrary
。我如何找到教程或示例代码?
Stack Overflow问题 How to dynamically load and unload a native DLL file? 是一个桌面示例,但它如何为Compact Framework完成? 请注意,.NET Compact Framework没有'Marshal.GetFunctionPointerForDelegate'方法。
答案 0 :(得分:1)
CF运行时本身为P / Invokes调用LoadLibrary - 它为你使用的DLL的每个不同“版本”调用它(所以如果你在一个地方使用“mynative.dll”而在另一个地方使用“mydll”,那么会被叫两次)。
从该调用返回的句柄不会暴露给应用程序,也不应该暴露给应用程序。没有办法,没有关闭应用程序,让运行时调用该DLL上的FreeLibrary,所以没有办法释放它。
我将不得不同意@Cody Gray对这个问题的评论,因为即使它确实有效,它也无法解决问题。您需要实际查找并修复导致您看到的不良行为的错误。