重复:我正在寻找相同 Visual-C++版本的库之间的ABI兼容性!
我们希望混合和匹配来自不同团队的一些内部C++ DLL - 在不同时间使用不同的项目文件构建.由于构建时间较长,我们确实希望避免大型单片构建,其中每个团队重新编译另一个团队库的源代码.
当消耗C++的DLL 和C++的接口是相当 清楚 的是,你只能这样做,如果所有的DLL与相同的编译器/ Visual Studio的版本编译.
什么对我来说并不很明显是什么,到底需要是相同的,以获得ABI的兼容性.
_DEBUG)和release(NDEBUG)不能混合 - 但是这些链接到不同版本的共享运行时这一事实也很明显./O需要相同的开关 - 优化级别是否会影响ABI兼容性?(我很确定不会.)/EH开关?/volatile:ms|iso......?本质上,我想提出一组(元)数据来与描述它的ABI兼容性的Visual-C++ DLL相关联.
如果存在差异,我现在只关注VS2015.
例如,winsock libs在所有版本的visual studio中都能很好地工作.但是我在为所有版本提供一致的二进制文件时遇到了麻烦.使用VS 2005编译的dll在链接到2008年编写的应用程序时将无法工作.我将2k5和2k8升级到SP1,但结果没有太大变化.它的工作原理还可以.但是当它们将它包含在C#应用程序中时,C#应用程序会出现访问冲突错误,但使用经典的C++应用程序时,它可以正常工作.
当我提供dll时,我应该知道一个策略吗?