如何在使用DLL文件后,通过程序卸载使用的DLL文件?

jxdong1013 2013-06-18 02:51:16
各位朋友:
  我在开发项目中遇到一个DLL使用更新问题,情况如下:
  DLL文件是用C++的动态库,C#程序进行调用。同时可能需要更新C++的DLL文件。 
由于C++文件进程需要更新,所有我会在程序中下载文件然后更新C++文件,提示



我在更新C++dLL文件之前,是调用过这个DLL的函数的。从而导致更新这个文件时,出现上图中的错误。

C# 调用 C++的方法如下:
[DllImport("ICCInter_hz.dll")]
public extern static int ICC_OpenSession( StringBuilder atr );
测试发现:
调用过方法以后, 文件就被程序占用了,无法删除此文件,求如何在调用以后及时的卸载这文件,可以被别的程序删除。
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxdong1013 2013-06-21
  • 打赏
  • 举报
回复
[DllImport("Kernel32.dll")] public static extern IntPtr LoadLibrary(string lpFileName); [DllImport("kernel32.dll", SetLastError = true)] public static extern int GetProcAddress( IntPtr hModule, string lpProcName); [DllImport("kernel32.dll", EntryPoint = "FreeLibrary", SetLastError = true)] public static extern bool FreeLibrary(IntPtr hModule); 谢谢 版主的 帮助,问题解决了。
bdmh 2013-06-20
  • 打赏
  • 举报
回复
这是静态加载的,一运行就占用了,你可以哟个api的 LoadLibrary 动态加载,用完卸载
jxdong1013 2013-06-20
  • 打赏
  • 举报
回复
需求里要求不能退出程序,而且下载文件是程序的一部分,没有单独的升级程序。 应该有办法卸载使用过的dll文件吧。
shawn_yang 2013-06-19
  • 打赏
  • 举报
回复
你需要退出正在使用dll的原程序,自动切换为升级的程序,不能直接使用原来的程序升级 因为原程序调用dll,导致dll无法删除修改,原程序要退出进程。
jxdong1013 2013-06-19
  • 打赏
  • 举报
回复
没人气,顶一下。上去

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧