c++ - 在运行时加载的 dll/so 中 atexit() 的行为是什么?

标签 c++ dll shared-libraries

如果我在运行时加载一个 dll/so 文件(即使用 LoadLibrary()dlopen()),C++ atexit 的行为是什么()函数?如果我在应用程序退出之前卸载库,它会被调用吗?我可以期望在所有平台上都有相同的行为吗? (具体来说,windows 和类 unix 系统)

最佳答案

在 Windows 下:当您调用 FreeLibrary 时,每个 dll 都会执行 atexit 函数链。重要的是要注意 dll 以未指定的顺序卸载,因此不要添加依赖于其他 dll 全局变量的 atexit 处理程序。

这是更多信息链接:http://msdn.microsoft.com/en-us/library/988ye33t.aspx

关于c++ - 在运行时加载的 dll/so 中 atexit() 的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695765/

相关文章:

c - 返回一个列表作为数据结构契约

c - gcc 共享库与同一个库中的 header

c++ - 重载 operator= 在类之间交换数据

c++ - 重载函数模板

c++ - 如何从 Visual Basic 2010 调用 C++ dll 文件

c - VB6中如何从指针获取字符串

c++ - 使用 boost 的运行时错误 - undefined symbol : _ZN5boost6system15system_categoryEv

C++ 位字段(有效地传递它,又名语法糖)

c++ - 从数据中创建/放置圆圈/网格的简单数据可视化

c++ - 我可以在 DLL 中创建第二个单例实例吗?