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

VC++ 2010 SDK for VC++ 2008, 2005 clients

本文关键字:VC++2010 SDK 客户端 2005 VC++2008 用于      更新时间:2023-10-16

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

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

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

关键原则:

  • 您不能公开标准C++库(std::string等)中的任何对象,它们的布局不兼容
  • 不能使用例外,SEH可以
  • 不能返回任何需要客户端代码来释放指向的资源的指针
  • 您应该使用/MT进行构建,这样客户端就不会在挖掘所需的CRT版本时头疼
  • 从2003年到2010年,只要您能确保对象布局不受除/Zp之外的编译器设置的影响,您通常可以使用对象布局。虚拟继承一直很麻烦。验证sizeof在不考虑所选配置的情况下产生的大小是否相同

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