在运行时加载allxit()在dll /中的行为是什么?

时间:2012-01-01 21:45:20

标签: c++ dll shared-libraries

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

1 个答案:

答案 0 :(得分:4)

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

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