在 Windows 里 DLL 卸载自身模块是无法通过字节调用 FreeLibrary 自己来实现的。

原因分析

在当前线程中调用 FreeLibrary 后,当前模块就会立即被释放掉,而当前线程还没有运行结束。所以程序就运行到了一块不可访问的内存里,产生异常从而导致程序崩溃。

解决方案

Windows 里面 提供了一条可以用来释放自身模块的函数 FreeLibraryAndExitThread 可以释放自身。

函数

VOID WINAPI FreeLibraryAndExitThread(_In_ HMODULE hLibModule, _In_ DWORD dwExitCode)

在升级win8.1之后,重新安装的Git虽然可以正常使用 但遇到https时会报“Unable to find remote helper for ‘https’”的错误

网络搜索了许久未果,于是自己研究

  1. 检查安装的文件 结果:所有文件均完整

  2. 检查文件的访问权限 结果:所有文件当前用户均可访问

  3. 为调用的git等exe文件授予管理员运行权限 结果:问题依旧存在

挣扎了半天,尝试重装解决。

在重装的时候选择了 管理员权限运行 结果意外的发现重装后,https可以正常使用了。

至此问题解决。