我正在尝试将大型项目切换为使用C++ 11.我遇到了大量的链接器错误,这些错误似乎是由使用C++ 11编译的库和使用C++ 03编译的库之间的STL类不匹配的命名空间引起的.
例如,假设库B是A的依赖关系.B具有以下模板化类作为其接口的一部分.
template <class Type>
class VectorParameter
{
public:
VectorParameter();
virtual ~VectorParameter();
...
}
Run Code Online (Sandbox Code Playgroud)
库A用实例化实例化模板VectorParameter<std::pair<float, float>>
.
当我使用C++ 11重新编译A而不重新编译B时,我遇到了抱怨的链接器错误
LFE::VectorParameter<std::__1::pair<float, float>>::~VectorParameter() is undefined symbol.
我认为这里的问题是库A使用std::__1::pair
而B仍在使用std::pair
.根据这个推理,我假设我需要重新编译在其接口中引用STL类型的所有依赖库.
如果是这种情况,那么将大型项目迁移到C++ 11将需要所有相关组同时切换,这在复杂项目中似乎不太实用.处理这个问题的最佳做法是什么?
归档时间: |
|
查看次数: |
323 次 |
最近记录: |