我在运行时在便携式界面中包装了依赖于操作系统的API加载共享库。
问题是,在记录close()函数时,我注意到没有关于dlclose()或FreeLibrary()函数失败会发生什么的文档。句柄是否仍然可用,因为库无法关闭?或者它处于某种腐败状态?我还能用吗?
我需要这些信息来为我的API用户编写适当的文档,并在C ++界面中提供一些异常保证。
答案 0 :(得分:2)
一旦你打电话给dlcose,手柄就不再有效了:
http://pubs.opengroup.org/onlinepubs/007904975/functions/dlclose.html
使用dlclose()关闭对象后,应用程序应该假定其符号不再可用于dlsym()。
dlclose()
很可能什么都不做。因为其他库也有库的句柄。如果关闭失败则通常意味着其他人正在使用它。但这并不意味着你可以通过你的手柄再次使用它(已经死了)。
错误通常表示您的句柄无效。