c++ - 如何防止DLL在C++中全局变量的D'tor之前被卸载?
问题描述
我的程序链接了链接 libfoo.dll 的mylib.dll ,而libfoo.dll在运行时通过加载libbar.dllLoadLibrary
。我lib_global
在mylib.dll中有一个全局变量。结构是这样的:
main
|
mylib.dll { lib_global }
|
libfoo.dll
|
| LoadLibrary
|
libbar.dll
问题是libbar.dlllib_global
在Windows上的 D'tor 之前被卸载。退出过程是这样的:
- libbar.dll已卸载
- mylib.dll已卸载
- D'tor of
lib_global
被称为
- D'tor of
- libfoo.dll已卸载
因此,如果mylib.dll持有一些指向libbar.dll中函数的指针,并且 D'torlib_global
调用函数通过函数指针执行某些操作,则程序将崩溃。
我的问题是如何防止libbar.dll在 D'tor of 之前被卸载lib_global
?
解决方案
推荐阅读
- odbc - AX7 (D365) 中的 ODBC 连接
- wordpress - Wordpress 重力形式总计
- javascript - TabNavigator 在 react-native 中自定义图标错误
- gradle - Windows 中的 .gradle 文件夹中缺少 gradle.properties 文件
- php - 在 Windows 上读取串行端口
- c# - 简单列表合并 C#(无泛型)
- javascript - 如何创建一个
- 来自 JavaScript 的每个字符串的标记
- r - 如何在空格之前只保留字符串的第一个字符,以及R中空格之后的所有字符
- android - MPAndroidChart - Linechart/LineDataSet 颜色问题与点(点之间的空间)
- jasper-reports - 如何在 ajax 请求成功后的新选项卡中显示 Jasper 报告 PDF 流