C++ 用c+编译共享库(旧标准)+;11共享图书馆
我正在尝试编译一个使用另一个共享库(B)的共享库(a) 必须在不向g++添加C++ 用c+编译共享库(旧标准)+;11共享图书馆,c++,c++11,shared-libraries,libraries,.so,C++,C++11,Shared Libraries,Libraries,.so,我正在尝试编译一个使用另一个共享库(B)的共享库(a) 必须在不向g++添加-std=c++11选项的情况下编译A库(因为有大量的代码,而且像std::make_pair这样的东西在'11标准中不起作用) 要使用B库,第一个库只需在其中一个文件中包含“B.h”,然后使用-I/path/inc-L/path/lib-lB进行编译 库B由名称空间B中的一组函数组成,并在其自己的名称空间(B::Internal)中包含一些类定义。函数和类之间的关系是全局范围内的静态指针,用\uuuu属性(构造函数))
-std=c++11
选项的情况下编译A库(因为有大量的代码,而且像std::make_pair
这样的东西在'11标准中不起作用)
要使用B库,第一个库只需在其中一个文件中包含“B.h”,然后使用-I/path/inc-L/path/lib-lB
进行编译
库B由名称空间B
中的一组函数组成,并在其自己的名称空间(B::Internal)中包含一些类定义。函数和类之间的关系是全局范围内的静态指针,用\uuuu属性(构造函数))
初始化
问题是这个类(B::Internal::classB)定义了一些std::mutex
私有属性,并且遵循include的链:
libA->libB->B::internal
->std::mutex
,,
当编译libA而不使用-std=c++11
时,标准编译失败
但是,libA从不使用
B::internal
,所以混合使用这两个库应该不会有问题。另外,如果c++11特性是私有属性,为什么它们没有隐藏到libA?。是否有一些隐藏模式<代码> B::内部结构< /代码>到LIBA?< /P> < P>有一个C++习语用于隐藏实现细节。
另外,不同的C++选项编译的库在其接口中不能公开任何