Constructor 如何告诉运行时加载程序在打开共享库时不要运行构造函数

Constructor 如何告诉运行时加载程序在打开共享库时不要运行构造函数,constructor,dlopen,Constructor,Dlopen,从dlopen的手册中,我看到 相反,库应该使用属性((构造函数))和属性((析构函数))函数属性导出例程。 有关这些的信息,请参见gcc信息页面。构造函数例程是在dlopen()返回之前执行的,析构函数例程是 在dlclose()返回之前执行。 " 我不希望特定共享库中的构造函数自动运行,而其他共享库中的构造函数不受影响。有没有办法做到这一点 实际上,我正在使用dlopen、dlsym、dladdr来查找某个共享库的确切路径 我不希望特定共享库中的构造函数自动运行 太糟糕了:库作者决定,除非运

从dlopen的手册中,我看到

相反,库应该使用属性((构造函数))和属性((析构函数))函数属性导出例程。 有关这些的信息,请参见gcc信息页面。构造函数例程是在dlopen()返回之前执行的,析构函数例程是 在dlclose()返回之前执行。 "

我不希望特定共享库中的构造函数自动运行,而其他共享库中的构造函数不受影响。有没有办法做到这一点

实际上,我正在使用dlopen、dlsym、dladdr来查找某个共享库的确切路径

我不希望特定共享库中的构造函数自动运行

太糟糕了:库作者决定,除非运行构造函数,否则他的库不能安全使用,他比你有更多的发言权

实际上,我正在使用dlopen、dlsym、dladdr来查找某个共享库的确切路径

你是说你打开这个库的唯一原因就是为了找到它的绝对路径


如果是这样的话,你为什么首先关心绝对路径呢?

事实上,我是这个库的作者。我不知道我的用户可以把我的共享库放在哪里。如果dlopen可以找到它,则该功能可以工作。因此,我依靠dlopen/dladdr来查找库的绝对路径。