首页 > 解决方案 > 如何防止DLL在C++中全局变量的D'tor之前被卸载?

问题描述

我的程序链接了链接 libfoo.dll 的mylib.dll libfoo.dll在运行时通过加载libbar.dllLoadLibrary。我lib_globalmylib.dll中有一个全局变量。结构是这样的:

  main
    |
mylib.dll { lib_global }
    |
libfoo.dll
    |
    | LoadLibrary
    |
libbar.dll

问题是libbar.dlllib_globalWindows上的 D'tor 之前被卸载。退出过程是这样的:

  1. libbar.dll已卸载
  2. mylib.dll已卸载
    • D'tor oflib_global被称为
  3. libfoo.dll已卸载

因此,如果mylib.dll持有一些指向libbar.dll中函数的指针,并且 D'torlib_global调用函数通过函数指针执行某些操作,则程序将崩溃。

我的问题是如何防止libbar.dll在 D'tor of 之前被卸载lib_global

标签: c++windowsdll

解决方案


推荐阅读