适用于VC ++ 2008,2005客户端的VC ++ 2010 SDK

时间:2012-01-26 06:44:22

标签: c++ visual-studio-2010 sdk backwards-compatibility

我想使用Visual C ++ 2010编写SDK,VC ++ 2010客户端以及旧的VC ++版客户端都可以使用它。让我们说,我希望它兼容2005和2008版本。 SDK包含几个h,lib和dll文件。库已经导出了C ++类和全局函数。公共SDK接口(h文件)不包含以前VC ++版本不支持的任何功能。内部SDK实现可能包含此类功能(如Lambda表达式,右值引用等)。

一些公共SDK方法具有回调接口参数。回调接口在我的h文件中定义,在客户端代码中实现并传递给我的方法。这可能是个问题吗?

我做了几个小测试,发现它有效。有没有人知道用旧的VC ++版本编写的C ++客户端使用VC ++ 2010 SDK有什么问题?

1 个答案:

答案 0 :(得分:2)

主要原则:

  • 您不能公开标准C ++库中的任何对象(std :: string等),它们的布局不兼容
  • 你不能使用例外,SEH没关系
  • 您无法返回任何需要客户端代码释放指向资源的指针
  • 您应该使用/ MT进行构建,以便客户端不必费力地挖掘所需的CRT版本
  • 您通常可以使用2003到2010之间的对象布局,只要您可以确保它不受/ Zp以外的编译器设置的影响。虚拟继承一直很麻烦。无论选择的配置如何,验证sizeof是否产生相同的大小。

COM是确保最大兼容性的好方法。