Ale*_* C. 11 c c++ portability shared-libraries
我有一个用C++编写的共享库.它导出一个可见的界面,extern "C"该界面由创建,破坏和操纵不透明类型的函数组成.
现在,我想要一个使用这个库的纯C程序.
我可以这样做(平台独立)吗?如果main没有用C++编写,C++ 运行时和C++静态对象什么时候会被初始化?
初始化阶段取决于平台.对于Linux,动态加载的库可以具有特殊声明的符号,这些符号在加载库dlopen()时自动调用.
有关详细信息dlopen(3),请参阅联机帮助页的部分,过时的符号init()和fini().
静态初始值设定项被隐式标记为__attribute__((constructor)),因此通常您不必执行任何特殊操作来在加载共享库时调用它们.我怀疑在其他平台上这是相同或相似的.