Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 共享对象中静态库中的静态函数_C++_Static_Shared - Fatal编程技术网

C++ 共享对象中静态库中的静态函数

C++ 共享对象中静态库中的静态函数,c++,static,shared,C++,Static,Shared,我有一个应用程序,它使用共享对象(*.so)作为在运行时加载的插件。我还有一个静态库(*.a),其中包含一些静态函数。如果PluginA和PluginB都链接到库,它们是否也会获得自己的静态函数副本?是的,两个插件都会获得自己的静态库中包含的函数/符号副本。要在共享库或插件中使用。库必须是位置独立的代码,这可以在编译和链接时通过选项-fPIC实现 您还必须确保PluginA和PluginB不是使用选项RTLD_GLOBAL的dlopened(),因为PluginA和PluginB中包含的静态库的

我有一个应用程序,它使用共享对象(
*.so
)作为在运行时加载的插件。我还有一个静态库(
*.a
),其中包含一些静态函数。如果PluginA和PluginB都链接到库,它们是否也会获得自己的静态函数副本?

是的,两个插件都会获得自己的静态库中包含的函数/符号副本。要在共享库或插件中使用。库必须是位置独立的代码,这可以在编译和链接时通过选项-fPIC实现


您还必须确保PluginA和PluginB不是使用选项RTLD_GLOBAL的dlopened(),因为PluginA和PluginB中包含的静态库的两个副本之间可能存在名称冲突。如果在编译时动态链接PluginA和PluginB,那么在共享库中名称冲突的问题会更加明显。

是的,从静态库中使用的所有内容都会直接链接到代码中。这是你的问题吗?还有其他可能性吗?