一启动的exe调用某个dll中的一函数,在exe不退出(必须)的情况下想用新版本dll自动覆盖掉老的dll,必须先要动态卸载掉这个dll?
不知道我这个思路在理论上是否可行?如果可行那如何卸载?

解决方案 »

  1.   

    招聘 delphi 程序员(人数:2)
     毕业两年以上
     两年以上 delphi 工作经验
     熟悉 sql server 
     sql 编写能力突出者优先联系方式:
     深圳中普达科技有限公司
     0755 86170837
     请将简历发至 [email protected]
      

  2.   

    function LoadLibrary(lpFileName:PAnsiChar):HMODULE;
    function GetProcAddress(hinst:HMODULE;lpProcName:PAnsiChar);Pointer;
    funcion FreeLibrary(Handle:HMODULE):BOOL;
      

  3.   

    可以行的通的,最后就是这个Exe升级有点难处理。
    FreeLibrary(hHandle);
      

  4.   

    楼上我试用过FreeLibrary(hHandle); 
    就是这个hHandle不好传递呀,请详细赐教,谢谢!
      

  5.   

    hHandle := LoadLibrary('a.dll');FreeLibrary(hHandle);hHandle := LoadLibrary('NewDLL.dll');
      

  6.   

    把静态调用Dll改为动态调用即可
      

  7.   

    程序是两家公式分别写的exe是另外一家公司的,dll是我写的,所以没法改exe,
    所以是静态调用,动态释放。
    各位再帮我想想办法。
      

  8.   

    静态调用不能动态释放,这样会有AV错误的,而且即使动态调用也需要保证资源释放了才能FreeLibrary的
      

  9.   

    hHandle   :=   LoadLibrary( 'old.dll '); FreeLibrary(hHandle); 
    重新LOAD一下
    hHandle   :=   LoadLibrary( 'NewDLL.dll ');如果要UPDATE,EXE最好另做一个EXE程序
      

  10.   

    解决了吗?
    最好是用远线程注入技术,
    注入EXE一段代码,在EXE寻找到你的DLL的handle,再Free掉,应该可行,但锁有做成功!