dlopen()设置errno吗?

一切都在标题中。 手册页没有说什么。 一些谷歌报告有些人在dlopen之后检查errno,但只是少数并且有各种结果。 该函数确实返回成功/非成功值,但应该如何找出失败的原因。

那么dlopen()设置errno吗? 那么,在哪里定义了不同的errno值? 如果没有,应该用什么来检查导致失败的原因?

不 (重点补充)。

成功完成后, dlopen()将返回符号表句柄。 如果找不到文件 ,无法打开读取,不是dlopen()处理的适当的可执行目标文件格式,或者在加载文件或重定位其符号引用的过程中发生错误, dlopen()将返回空指针。 应通过dlerror()获得更详细的诊断信息


正如其他人所指出的,没有任何东西禁止dlopen() (或更可能是dlopen()调用的函数)修改errno 。 但符合标准的dlopen()不会通过errno报告自己的错误。 你需要调用dlerror()