在* nix .so库中,加载和卸载该库时,系统是否会调用一个入口点?

在更实际的注释上:如果.so是用C++编写的,并且包含带有构造函数和析构函数的全局对象,并且从没有构造/破坏概念的语言加载,那么是否正确构造/破坏了全局对象?

最佳答案

  • 不,没有等效于DllMain。
  • 用于JNI库,例如在Android上,可能会有一个特殊的条目JNI_OnLoad,旨在填充JNI函数表。
  • GCC定义了特殊属性构造函数,以允许某些代码在共享库加载时运行。
  • C++保证将执行全局和静态对象的构造函数,无论加载.so的代码是否意识到这些类或具有构造概念。
    销毁者也是如此,但是在某些情况下,至少有一些销毁者没有机会奔跑是可能的,例如当发生sigfault并且禁用了异常时。
  • 关于c++ - 相当于DllMain的Linux,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12463718/

    10-13 06:18