【发布时间】:2012-01-01 21:45:19
【问题描述】:
如果我在运行时加载 dll/so 文件(即使用 LoadLibrary() 或 dlopen()),C++ atexit() 函数的行为是什么?如果我在应用程序退出之前卸载库,它会被调用吗?我可以期望在所有平台上都有相同的行为吗? (特别是windows和类unix系统)
【问题讨论】:
标签: c++ dll shared-libraries
如果我在运行时加载 dll/so 文件(即使用 LoadLibrary() 或 dlopen()),C++ atexit() 函数的行为是什么?如果我在应用程序退出之前卸载库,它会被调用吗?我可以期望在所有平台上都有相同的行为吗? (特别是windows和类unix系统)
【问题讨论】:
标签: c++ dll shared-libraries
在 windows 下:当您调用 FreeLibrary 时,每个 dll 都会执行atexit 函数链。请务必注意,dll 以未指定的顺序卸载,因此不要添加依赖于其他一些 dll 全局变量的 atexit 处理程序。
这里是更多信息链接:http://msdn.microsoft.com/en-us/library/988ye33t.aspx
【讨论】: