voi*_*ter 13 c c++ abi binary-compatibility visual-studio
我有两个场景.假设我有3个导出C++符号的共享库,每个库都使用VS7.1,VS8和VS9构建.我在VS9中编译了所有3个.出于某种原因,这是有效的.我不需要在VS9中为VS9链接器重新编译前两个库,以成功找到符号并链接它们.
现在,如果我有一个只使用C语法(extern"C")导出符号的库,这是一样的吗?我听说有人说ABI for C是标准化的,所以在某种程度上保证你可以在所有版本的Visual Studio中使用Visual Studio 8中编译的C库.
基本上,所有这些事情的结合令人困惑.我不确定在不同版本的Visual Studio之间链接C++和基于C的共享库(使用相应的导入库)之间有什么保证.我想听听关于任何其他版本的Visual Studio上C 和 C++导入或静态库的向前/向后兼容性的一致意见.
这对我来说是因为我使用的闭源库是在Visual Studio .NET 2003(VS7.1)中编译的.我的团队认为这将我们锁定到VS 7.1编译器,但是我已经在VS8和VS9中测试了这些库,甚至是VS2010,它们链接得很好.但是,我不确定这个内在的危险.请注意,所讨论的库具有C变体和C++变体.基本上,C变量是标准C导出,C++库是C库和导出类的抽象.